这个代码一开始出了点问题,在进队列时没有将next指针置为NULL导致后面数据出错,不过好在,我问了一个朋友,才发现这个问题。

在此我要对我这位朋友表示感谢!3Q温小姐

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream.h>
typedef int ELemType;
typedef struct Node
{ELemType data;struct Node *next;
}QNode;
typedef struct
{QNode *front;QNode *rear;
}LiQueue;
void InitQueue(LiQueue *&p)
{p=(LiQueue *)malloc(sizeof(LiQueue));p->front=p->rear=NULL;}
void DestroyQueue(LiQueue *&q)
{QNode *r,*p=q->front;if(p!=NULL){r=p->next;while(r!=NULL){free(p);p=r;r=p->next;}} free(p);//删除头节点free(q);//删除链队头结点}
bool QueEmpty(LiQueue *q)
{return (q->rear==NULL);
}
void EnQueue(LiQueue *&q,ELemType e)
{QNode *r;r=(QNode *)malloc(sizeof(QNode));r->data=e;r->next=NULL;if(q->rear==NULL){q->front=q->rear=r;}else{q->rear->next=r;q->rear=r;}
}
bool DeQueue(LiQueue *&p,ELemType &e)
{QNode *r;if(p->rear!=NULL){r=p->front;e=r->data;if(p->rear==p->front)p->rear=p->front=NULL;else{p->front=p->front->next;}free(r);return true;}return false;
}
void DisQueue(LiQueue *q)
{if(q->rear!=NULL){QNode *p=q->front,*r;while(p!=NULL){cout<<p->data<<" ";p=p->next;}}
}
int main()
{int a;LiQueue *q;InitQueue(q); if(QueEmpty(q))cout<<"队列为空"<<endl;EnQueue(q,1);EnQueue(q,2);EnQueue(q,3);EnQueue(q,4);DisQueue(q);DeQueue(q,a);cout<<a<<endl;DisQueue(q);DestroyQueue(q);return 0;
}

数据结构教程(第四版)P85~87//队列的链式存储结构相关推荐

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

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

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

    liqueue.cpp#include <stdio.h> #include <malloc.h> #include "liqueue.h" void In ...

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

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

  8. 数据结构(二)----线性表(List)链式存储结构(1)

    线性表List---链式存储结构 相关概念 链式存储结构/链式表 定义 链式存储特点 单链表 单链表读取 单链表插入 单链表删除 时间复杂度 单链表整表创建 单链表整表删除 顺序存储与链式存储差异 P ...

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

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

最新文章

  1. java ef 引用问题_配置使用EF常见的一些问题及解决方案
  2. Pytorch 深度学习实战:视频自动打码
  3. 第十五届全国大学生智能汽车竞赛 车模检查手册
  4. Function Component 与 Class Component 有何不同?
  5. 【NOIP】提高组2015 神奇的幻方
  6. 给定下面的java代码_则运行_会产生类型的异常_JavaSE_笔试题_单选选择题
  7. floyed java_Floyd算法java实现demo
  8. LINUX smb共享
  9. c语言 给结构体赋初值,c/c++ 结构体赋初值的小技巧
  10. codeforces 598C C. Nearest vectors(极角排序)
  11. 网站前后端交互学习有感
  12. 7年前的200电话卡帐号
  13. 五分钟读懂UML类图(转)
  14. c++ 写x64汇编 5参数_自己动手写操作系统 8086sos
  15. 如何为 Mac 添加新语言?
  16. c#如何实现叫号操作_C#开发银行叫号系统
  17. (翻译)机器学习:E.coli数据集的不平衡多类分类
  18. 攒机笔记二十二:台式组装机(2022.9)
  19. 大数据分析师技能图谱详解
  20. 异步时钟域的亚稳态问题和同步器(四)

热门文章

  1. 掘金小册子mysql_掘金小册子
  2. VideoProcessingFramework框架编译启动全过程
  3. 三小时学会css(菜鸟教程精华版)【下】
  4. html5响应式布局案例
  5. 手机端微信一键登录插件代码分享
  6. 拉格朗日插值的优缺点_拉格朗日插值方法的理论基础。
  7. 语音处理入门概念整理(一)
  8. JavaEE使用servlet、cookie实现用户登陆和数据保存
  9. 小红帽linux各功能中英,英文短剧《小红帽》剧本台词完整版---中英对照文本版...
  10. 基于android的车辆违章停放执法移动APP-计算机毕业设计