数据结构教程(第四版)P85~87//队列的链式存储结构
这个代码一开始出了点问题,在进队列时没有将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//队列的链式存储结构相关推荐
- 队列的链式存储结构及其实现_了解队列数据结构及其实现
队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...
- 队列的链式存储结构及实现
队列的链式存储结构,其实就是线性表的单链表,只不过它只是尾进头出而已,我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端节点.如果 空队列时,front和re ...
- 队列的链式存储结构(链队)
链队 1.队列的链式存储结构 typedef struct QNode{ //结点结构QElemType data; //结点数据域struct QNode *next; //结点指针域 }QNode ...
- Python数据结构与算法基础|第五期:代码实现——循环队列的链式存储结构
在上一次,我们通过取余等数学方法实现了顺序存储的循环队列.由于我们使用的是Python内置的列表类型作为底层,实际上我们的存储空间并不是首尾相连的.下面,我们使用链式存储结构来实现一个真正首尾相连的循 ...
- [数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)
代码如下: #include <iostream> using namespace std;typedef int ElemType;typedef struct QNode {ElemT ...
- 第7周实践项目2 队列的链式存储结构及其基本运算的实现
liqueue.cpp#include <stdio.h> #include <malloc.h> #include "liqueue.h" void In ...
- 队列的链式存储结构的实现:入队、出队
1.实验内容: (1)用随机函数生成10个3位整数(100~999),把这些整数应用入队操作存于队列中: (2)应用遍历操作输出队列的内容: (3)把队列的内容翻转,应用出队操作输出队列的内容. 2. ...
- 数据结构(二)----线性表(List)链式存储结构(1)
线性表List---链式存储结构 相关概念 链式存储结构/链式表 定义 链式存储特点 单链表 单链表读取 单链表插入 单链表删除 时间复杂度 单链表整表创建 单链表整表删除 顺序存储与链式存储差异 P ...
- Java实现队列 链式存储结构
2019独角兽企业重金招聘Python工程师标准>>> 队列的链式存储结构 示例代码如下, package hash;/*** Created with IntelliJ IDEA. ...
最新文章
- java ef 引用问题_配置使用EF常见的一些问题及解决方案
- Pytorch 深度学习实战:视频自动打码
- 第十五届全国大学生智能汽车竞赛 车模检查手册
- Function Component 与 Class Component 有何不同?
- 【NOIP】提高组2015 神奇的幻方
- 给定下面的java代码_则运行_会产生类型的异常_JavaSE_笔试题_单选选择题
- floyed java_Floyd算法java实现demo
- LINUX smb共享
- c语言 给结构体赋初值,c/c++ 结构体赋初值的小技巧
- codeforces 598C C. Nearest vectors(极角排序)
- 网站前后端交互学习有感
- 7年前的200电话卡帐号
- 五分钟读懂UML类图(转)
- c++ 写x64汇编 5参数_自己动手写操作系统 8086sos
- 如何为 Mac 添加新语言?
- c#如何实现叫号操作_C#开发银行叫号系统
- (翻译)机器学习:E.coli数据集的不平衡多类分类
- 攒机笔记二十二:台式组装机(2022.9)
- 大数据分析师技能图谱详解
- 异步时钟域的亚稳态问题和同步器(四)