[数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)
代码如下:
#include <iostream>
using namespace std;typedef int ElemType;typedef struct QNode
{ElemType data;QNode *next;
}QNode ,*QueuePtr;typedef struct
{QueuePtr front;QueuePtr rear;
}LinkQueue;bool initQueue(LinkQueue &q)
{q.front = q.rear = new QNode;if (!q.front) return false;q.front->next = nullptr;return true;
}bool destroy(LinkQueue &q)
{while (q.front){q.rear = q.front->next;delete q.front;q.front = q.rear;}q.front = q.rear = nullptr;return true;
}bool clearQueue(LinkQueue &q)
{QNode *p = q.front->next;QNode *s = nullptr;while (p){s = p;p = p->next;delete s;}q.rear = q.front;return true;
}bool queueEmpty(LinkQueue q)
{if (q.front == q.rear) return true;return false;
}int queueLength(LinkQueue q)
{int j = 0;QNode *p = q.front->next;while (p){j++;p = p->next;}return j;
}bool getHead(LinkQueue q, ElemType &e)
{if (q.front == q.rear) return false;e = q.front->next->data;return true;
}bool enQueue(LinkQueue &q, ElemType e)
{QNode *p = new QNode;if (!p) return false;p->data = e;p->next = nullptr;q.rear->next = p;q.rear = p;return true;
}bool deQueue(LinkQueue &q, ElemType &e)
{if (q.front == q.rear) return false;QNode *p = q.front->next;q.front->next = p->next;if (q.rear == p)q.rear = q.front;delete p;return true;
}void vis(ElemType e)
{cout << e << " ";
}void queueTraverse(LinkQueue q, void(*visit)(ElemType))
{QNode *p = q.front->next;while (p){visit(p->data);p = p->next;}
}int main() {LinkQueue q;initQueue(q);int n;int a;cin >> n;for (int i = 0; i < n; i++){cin >> a;enQueue(q, a);}queueTraverse(q, vis);cout << endl;deQueue(q, a);deQueue(q, a);queueTraverse(q, vis);cout << endl;cout << queueLength(q) << endl;return 0;
}
[数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)相关推荐
- 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)
线性表的链式存储结构 数据结构系列文章 第三章 循环链表.双向链表 文章目录 线性表的链式存储结构 前言 一.循环链表 (一)定义 (二)尾指针 二.双向链表 (一)定义 (二)代码 总结 前言 提示 ...
- 有关数据结构基础知识(数据结构 严蔚敏版)
1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...
- 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)
线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...
- 数据结构(二):线性表包括顺序存储结构(顺序表、顺序队列和顺序栈)和链式存储结构(链表、链队列和链栈)...
还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表. 什么是线性表 线性表的划分是从数据的逻辑结构上进行的.线性指的是在数据的逻辑结构上是线性的.即在数据元素的非空有限集中 (1) 存在唯一的 ...
- 队列的链式存储结构及其实现_了解队列数据结构及其实现
队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...
- Python 数据结构 之 串 的链式存储结构
本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的链式存储结构. 用Python仿照C语言来实现. 文章转载请注明: Python 数据 ...
- 【数据结构】 实验报告10 顺序、链式存储结构的二叉树递归遍历、层次遍历求高度
一.实验目的和要求 (源码在最后) 要求: 两种及以上存储结构(建议 顺序存储结构和链式存储结构各一).两种及以上方法(建议 递归遍历和层次遍历方法各一).分析各代码性能. 抽象数据类型(二叉树)独立 ...
- 数据结构和算法:(3)3.2线性表的链式存储结构
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素也就是说你这个可以放在A地点,这个可以放在E地点,A地点和E地点中间可以隔开一个C地点和D地点,这样是允许的),这组存储单元可以存在 ...
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
最新文章
- AI 3.0》王飞跃教授推荐序——未来智能:人有人用,机有机用
- 汤家凤高等数学基础手写笔记-重积分
- C++ string清空并释放内存空间的两种方法(shrink_to_fit()、swap())
- expression tree to string
- replaceAll的坑
- OpenGL 实例化	Instancing
- Cloud for Customer系统里的附件url,可以通过partner编程自己生成么?
- 用 JavaScript 验证只能输入数字,并做数字加总
- 由于未分配内存的指针导致段错误
- 【前端就业课 第一阶段】HTML5 零基础到实战(五)基础元素
- c#解决在数据表格中无法显示秒数问题
- html怎么给code标签添加语言,html code标签怎么用?html code标签的作用解释
- [bz][LINUX command 002] 嵌入式常用的命令
- Spring框架----Spring的环绕通知
- 动态规划问题以及诸多实例分析
- matlab深度学习基本操作,深度学习讲解,源代码分享,用一用改一改随便发篇EI
- 易控INSPEC软件与欧姆龙PLC以太网通讯
- win10您的windows许可证即将过期
- iOS-Swift3富文本(UILable文本图文混排)
- SAP 物料评估类未填写
热门文章
- 剑指offer之先序非递归打印二叉树
- php基础教程 第十一步 面向对象
- design短语的用法总结_design的意思、用法、搭配和例句
- php session缓存,扫盲:php session缓存至memcached中的方法
- java 栈和队列实现迷宫代码_LeetCode每日一题--剑指 Offer 09. 用两个栈实现队列(Java)
- python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算
- 2020-11-04关于出现tomcat启动失败的一种原因
- 他让全世界凶手睡不着觉,现实版福尔摩斯,退休了4次又被拽回来工作,无敌实在是太寂寞了~...
- 高糊马赛克秒变高清,表情帝:这还是我吗?
- 修车工在生命最后,才知道自己的儿子是如今世界首富!