liqueue.cpp#include <stdio.h>
#include <malloc.h>
#include "liqueue.h"
void InitQueue(LiQueue *&q)  //初始化链队
{q=(LiQueue*)malloc(sizeof(LiQueue));q->front=q->rear=NULL;
}
void DestroyQueue(LiQueue *&q)  //销毁链队
{QNode *pre=q->front,*p;if(pre){p=pre->next;while(p){free(pre);pre=p;p=p->next;}free(pre);}free(q);
}
bool QueueEmpty(LiQueue *q)  //判断链队是否为空
{return (q->rear==NULL);
}
int QueueLength(LiQueue *q)  //返回队列中数据元素个数
{int n=0;QNode *p=q->front;while(p){++n;p=p->next;}return n;
}
void enQueue(LiQueue *&q,ElemType e)  //入队(考虑是否为空队和非空队的情况来写)
{QNode *p;p=(QNode *)malloc(sizeof(QNode));p->data=e;p->next=NULL;if(q->rear==NULL)q->front=q->rear=p;else{q->rear->next=p;q->rear=p;}
}
bool deQueue(LiQueue *&q,ElemType &e)   //出队(考虑空队,只有一个数据节点,有多个节点以上,这三种情况)
{QNode *t;if(q->rear==NULL)return false;t=q->front;if(q->front==q->rear)q->front=q->rear=NULL;elseq->front=q->front->next;e=t->data;free(t);return true;
}
liqueue.h
#ifndef LIQUEUE_H_INCLUDED
#define LIQUEUE_H_INCLUDED
typedef char ElemType;
typedef struct qnode
{ElemType data;struct qnode *next;
} QNode;        //链队数据结点类型定义
typedef struct
{QNode *front;QNode *rear;
} LiQueue;          //链队类型定义
void InitQueue(LiQueue *&q);  //初始化链队
void DestroyQueue(LiQueue *&q);  //销毁链队
bool QueueEmpty(LiQueue *q);  //判断链队是否为空
int QueueLength(LiQueue *q);  //返回队列中数据元素个数
void enQueue(LiQueue *&q,ElemType e);  //入队
bool deQueue(LiQueue *&q,ElemType &e);   //出队
#endif // LIQUEUE_H_INCLUDED
main.cpp#include <stdio.h>
#include "liqueue.h"
int main()
{ElemType e;LiQueue *q;printf("(1)初始化链队q\n");InitQueue(q);printf("(2)依次进链队元素a,b,c\n");enQueue(q,'a');enQueue(q,'b');enQueue(q,'c');printf("(3)链队为%s\n",(QueueEmpty(q)?"空":"非空"));if (deQueue(q,e)==0)printf("队空,不能出队\n");elseprintf("(4)出队一个元素%c\n",e);printf("(5)链队q的元素个数:%d\n",QueueLength(q));printf("(6)依次进链队元素d,e,f\n");enQueue(q,'d');enQueue(q,'e');enQueue(q,'f');printf("(7)链队q的元素个数:%d\n",QueueLength(q));printf("(8)出链队序列:");while (!QueueEmpty(q)){deQueue(q,e);printf("%c ",e);}printf("\n");printf("(9)释放链队\n");DestroyQueue(q);return 0;
}



												

第7周实践项目2 队列的链式存储结构及其基本运算的实现相关推荐

  1. 队列的链式存储结构及其实现_了解队列数据结构及其实现

    队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...

  2. 队列的链式存储结构及实现

    队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点.如果 空队列时,front和re ...

  3. 队列的链式存储结构(链队)

    链队 1.队列的链式存储结构 typedef struct QNode{ //结点结构QElemType data; //结点数据域struct QNode *next; //结点指针域 }QNode ...

  4. Python数据结构与算法基础|第五期:代码实现——循环队列的链式存储结构

    在上一次,我们通过取余等数学方法实现了顺序存储的循环队列.由于我们使用的是Python内置的列表类型作为底层,实际上我们的存储空间并不是首尾相连的.下面,我们使用链式存储结构来实现一个真正首尾相连的循 ...

  5. 数据结构教程(第四版)P85~87//队列的链式存储结构

    这个代码一开始出了点问题,在进队列时没有将next指针置为NULL导致后面数据出错,不过好在,我问了一个朋友,才发现这个问题. 在此我要对我这位朋友表示感谢!3Q温小姐 #include<std ...

  6. 队列的链式存储结构的实现:入队、出队

    1.实验内容: (1)用随机函数生成10个3位整数(100~999),把这些整数应用入队操作存于队列中: (2)应用遍历操作输出队列的内容: (3)把队列的内容翻转,应用出队操作输出队列的内容. 2. ...

  7. [数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)

    代码如下: #include <iostream> using namespace std;typedef int ElemType;typedef struct QNode {ElemT ...

  8. Java实现队列 链式存储结构

    2019独角兽企业重金招聘Python工程师标准>>> 队列的链式存储结构 示例代码如下, package hash;/*** Created with IntelliJ IDEA. ...

  9. 队列的定义、循环队列的顺序存储结构及链式存储结构

    文章目录 1 队列的定义 1.1 文字定义 1.2 代码定义 2 循环队列 2.1 循环队列的定义 2.2 循环队列的顺序存储结构 3 队列的链式存储结构 3.1 链队列的入队操作 3.2 链队列的出 ...

最新文章

  1. PCL_common模块api代码解析
  2. 爬虫利器 puppeteer
  3. ylbtech-LanguageSamples-SimpleVariance
  4. AtCoder AGC038F Two Permutations (网络流、最小割)
  5. java设计模式face_java设计模式之-------原型模式
  6. 多生产者_通知:生产者补贴!打卡时间!定了
  7. Android 多级树形菜单
  8. 各行各业,各种资源,淘宝售卖的各种资料,全部分享了 !
  9. 硬盘扩容linux重新检查,Linux 无损扩容磁盘
  10. 13 集成测试之自顶向下集成测试方法
  11. COCO2017 test-dev评估
  12. Postgresql的使用-1 创建数据库
  13. Sql Server Report Builder 计算标准偏差
  14. 病毒木马查杀实战第017篇:U盘病毒之专杀工具的编写
  15. 洛谷刷题笔记 最高分数的学生姓名
  16. POJ-1436___Horizontally Visible Segments —— 线段树
  17. 11 编程指南_流数据
  18. 2. IMU原理及姿态融合算法详解
  19. 做外贸怎么起步,从哪里开发客户
  20. pycharm运行小游戏

热门文章

  1. 高通android开发摘要
  2. Redpine的Lite-Fi解决方案获Wi-Fi CERTIFIED认证
  3. java xml文件内容替换_java读取xml文件并转换成对象,并进行修改
  4. 恒安嘉新面试题java_面了三个大厂,终于拿到offer,数年Java最经典的面试题总结...
  5. python中bin是什么意思_Python之一、#!/usr/bin/python到底是什么意思
  6. restful post请求_猿蜕变9——一文搞定SpringMVC的RESTFul套路
  7. 30分钟带你熟练性能优化的那点儿事儿(案例说明)
  8. Android开发之搜Ya项目说明(3)
  9. jQuery 学习之路(1):引子
  10. Oracle rac进阶管理专家指导系列文档