队列的链式存储实现(简单的入队和出队操作)
/************************************************************************
*
* 文件名:2.2.5.cpp
*
* 文件描述:队列的链式存储实现
*
* 创建人: fdk* 时 间: 2018-07-31
*
* 版本号:1.0
*
* 修改记录:队列和堆栈一样也能采取链式存储,但队列的头fronts必须指向链表的头结点,
* 队列的尾rear指向链表的尾节点
*
*
************************************************************************/
#include <iostream>
#include <cstdlib>
#define MAXSIZE 100
using namespace std;/*定义链队结点的类型*/
typedef struct Node
{int data;struct Node *next;
}LinkNode;/*将头尾指针封装在一起的链队列*/
typedef struct
{LinkNode *fronts; //指向队头结点LinkNode *rear; //指向队尾结点
}LinkQueue;/*初始化*/
void InitLinkQueue(LinkQueue *&q);/*判断是否为空*/
bool LinkQueueEmpty(LinkQueue *q);/*入队列*/
void EnLinkQueue(LinkQueue *q,int x);/*出队列*/
int DeLinkQueue(LinkQueue *q);
int main()
{int i; //for循环变量LinkQueue *q;InitLinkQueue(q); //初始化int a[] = {2, 4, 5, 1, -2, 4, 6, 10};int lengths = sizeof(a) / sizeof(a[0]);/*入队列*/cout << "入队的顺序为:" << endl;for (i = 0; i < lengths; i++){cout << a[i] << " ";EnLinkQueue(q,a[i]);}cout << endl;/*出队列*/cout << "出队的顺序为:" << endl;while (!LinkQueueEmpty(q)){cout << DeLinkQueue(q) << " ";}cout << endl;return 0;
}/*初始化*/
void InitLinkQueue(LinkQueue *&q)
{q = (LinkQueue*)malloc(sizeof(LinkQueue));LinkNode *p;p = (LinkNode*)malloc(sizeof(LinkNode));p->next = NULL;q->fronts = q->rear = p;
}/*判断是否为空*/
bool LinkQueueEmpty(LinkQueue *q)
{if (q->fronts == q->rear){return true;}else{return false;}
}/*入队列*/
void EnLinkQueue(LinkQueue *q,int x)
{/*尾指针只能用来进行添加操作*/LinkNode *p;p = (LinkNode*)malloc(sizeof(LinkNode));p->data = x;p->next = NULL;q->rear->next = p;q->rear = p;
}/*出队列*/
int DeLinkQueue(LinkQueue *q)
{/*头指针用来进行删除操作*/LinkNode *p;if (LinkQueueEmpty(q)){cout << "该队列为空!" << endl;exit(-1);}else{int temp; //定义的临时变量用于存储被删除结点的值p = q->fronts->next;q->fronts->next = p->next;temp = p->data;if(p->next == NULL) //当队列中只有一个元素是被删除后需要将头指针和尾指针相等{q->rear == q->fronts;}free(p); //释放该结点并返回该结点的值return temp;}
}
参考链接
https://blog.csdn.net/sinat_26448309/article/details/76576499
队列的链式存储实现(简单的入队和出队操作)相关推荐
- 队列的链式存储结构及其实现_了解队列数据结构及其实现
队列的链式存储结构及其实现 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 ...
- 队列的入队和出队操作
开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/05/27 让我们跟着课程队列的特点.好比我们生活中也会发生的排队, 先排队的人先得到服务,先走出队列,后面 ...
- 复习队列的入队和出队操作
开发工具与关键技术:Visual Studio 2015 作者:杨灵武 撰写时间:2020/04/27 让我们跟着唐懿芳教授的课程来回忆一下队列的特点.好比我们生活中也会发生的排队,先排队的人先得到服 ...
- 【 C 】队列的链式存储实现
上篇博文:([ C ]队列 简记)简单的讲了一下队列,对队列的基本知识有了一个简单的了解,这篇博文承接上篇博文,主讲如何通过链式结构来实现队列. 如上图,提出了一个问题,队列的插入和删除操作分别在链表 ...
- Python数据结构与算法基础|第三期:代码实现——顺序存储队列与链式存储队列
由于队列的动态由队头指针与队尾指针共同反映,所以我们在实现先入后出的同时还要实现队头元素与队尾元素的访问.对于普通的队列,我们使用列表实现其顺序存储,使用其它方法实现其链式存储. 顺序存储 由于我们使 ...
- 队列,链队列,链式存储的队列
采用链式存储的队列称为链队列(linked queue),队列是运算受限的线性表,即队列的插入和删除位置分别位于表的两端.故需要两个指针来指向这2个特殊位置,即对首指针和队尾指针. 本例采用的是带头结 ...
- Python数据结构与算法基础|第五期:代码实现——循环队列的链式存储结构
在上一次,我们通过取余等数学方法实现了顺序存储的循环队列.由于我们使用的是Python内置的列表类型作为底层,实际上我们的存储空间并不是首尾相连的.下面,我们使用链式存储结构来实现一个真正首尾相连的循 ...
最新文章
- android 如何打开s3db,[转载]xe5 android 手机上使用sqlite
- hdu4821 字符串hash
- sign check fail: check Sign and Data Fail解决方案
- 去掉“搜一搜”后,让“查看新贴”等按钮居中
- svn\pristine\0a\0a66a6f1e12c54c3a0c3885a2bf5042977071358.svn-base系统找不到指定路径
- 用数据追女神:追女生如同创业
- java关键字与解释_Java关键字及作用解释
- 把AppData目录挪到D盘的方法方法
- 【C++】数字的组合排列情况
- WIFI、路由器、猫、AP管理
- 大学书信选3(新年心语)
- [笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV视频lO接口
- 2021考研英语黄皮书英一英二全套加解析
- Springboot 集成 Activiti时启动报错!'org.activiti.spring.boot.SecurityAutoConfiguration
- 嵌入式系统原理与应用末考总结
- 使用mybatis plus添加返回主键id
- 5.2 递归算法及设计思想
- 转录组验证-qRTPCR作图
- oracle SQL语句硬编码带来的问题以及解决办法
- 原生js实现form表单序列化的方法