C++链式队列基本操作
1 #include <iostream> 2 #define QUEUEELEMENTTYPE int 3 using namespace std; 4 5 /*结点*/ 6 typedef struct Node 7 { 8 QUEUEELEMENTTYPE data; /*数据域*/ 9 Node * next; /*指针域*/ 10 }LinkQueueNode; 11 12 /*队列*/ 13 struct LinkQueue 14 { 15 LinkQueueNode * front; /*头指针*/ 16 LinkQueueNode * rear; /*尾指针*/ 17 }; 18 19 /*将Q初始化为一个空的链队列*/ 20 int InitQueue(LinkQueue * Q) 21 { 22 Q->front=(LinkQueueNode * )malloc(sizeof(LinkQueueNode)); 23 if(Q->front!=0) 24 { 25 Q->rear = Q->front; 26 Q->front->next=0; 27 return true; 28 } 29 else 30 return false; 31 } 32 33 /*判断队列Q是否为空*/ 34 int IsEmpty(LinkQueue * Q) 35 { 36 if(Q->front==Q->rear) 37 return true; 38 return false; 39 } 40 41 /*将数据元素x插入到队列中去*/ 42 int EnterQueue(LinkQueue * Q , QUEUEELEMENTTYPE x) 43 { 44 Node * temp = (Node * )malloc(sizeof(Node)); 45 temp->next = 0; 46 temp->data = x; 47 Q->rear->next = temp; 48 Q->rear = temp; 49 return true; 50 } 51 52 /*将队列Q的队头元素出队,并存到x所指的存储空间中*/ 53 int DeleteQueue(LinkQueue * Q , QUEUEELEMENTTYPE &x) 54 { 55 if(Q->rear!=Q->front) 56 { 57 x = Q->front->next->data; 58 Q->front=Q->front->next; 59 return true; 60 } 61 return false; 62 } 63 64 /*获取队头的元素,并存到x所指的存储空间中*/ 65 int GetHead(LinkQueue * Q , QUEUEELEMENTTYPE &x) 66 { 67 if(Q->rear==Q->front) 68 return false; 69 else 70 x = Q->front->next->data; 71 return true; 72 } 73 74 /*将队列Q置为空*/ 75 void ClearQueue(LinkQueue * Q) 76 { 77 Q->front=Q->rear; 78 Q->front->next=0; 79 } 80 81 int main() 82 { 83 LinkQueue * queue=new LinkQueue; 84 InitQueue(queue); 85 cout << IsEmpty(queue) << endl; 86 for(int i=0;i<1;i++) 87 EnterQueue(queue,i); 88 cout << IsEmpty(queue) << endl; 89 int x = -1; 90 DeleteQueue(queue,x); 91 cout << "x = " << x << endl; 92 DeleteQueue(queue,x); 93 int y = -1; 94 GetHead(queue,x); 95 cout << "y = " << y << endl; 96 cout << IsEmpty(queue) << endl; 97 ClearQueue(queue); 98 cout << IsEmpty(queue) << endl; 99 return 0; 100 }
转载于:https://www.cnblogs.com/xxdfly/p/4384002.html
C++链式队列基本操作相关推荐
- 链队列的基本运算java_链式队列基本操作的实现问题
问题描述:用链式存储方式实现队列的基本操作 涉及变量:front:Node型自定义变量,指向队首元素 rear:Node型自定义变量,指向队尾元素 涉及教材:<数据结构--Java语言描述(第2 ...
- (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题
http://blog.csdn.net/fisherwan/article/details/20055179 首先要感谢这位大牛的一篇博客,地址如下:http://blog.csdn.net/hgu ...
- 链式队列的基本操作(入队、出队、遍历队列、清空队列)
链式队列是一种特殊的链表,只能在尾部添加,在头部删除,类似于排队问题,先入先出 代码如下 #include<stdio.h> #include<malloc.h> #inclu ...
- 【数据结构】链式队列的实现(C语言)
队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...
- 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现
1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似, 例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...
- c语言建立队列(顺序队列、循化队列和链式队列)
c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...
- c语言队列(顺序队列,循环队列,链式队列)
顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...
- c语言定义链式队列用菜单,数据结构之---C语言实现链式队列
//链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...
- 链式队列的实现(头文件及源程序)
链式队列的实现(头文件及源程序) Linkedqueue.h #ifndef __LINKEDQUEUE_H__ #define __LINKEDQUEUE_H__//元素类型定义 typedef i ...
最新文章
- mysql innodb_data_file_path_关于innodb_data_file_path设置
- 学python的基础-老司机学python篇:第一季(基础速过、机器学习入门)
- MyBatis整合ehcache实现二级缓存
- 201521123011 《Java程序设计》第8周学习总结
- 前端学习笔记之 JavaScript WebAPIs(整理)
- 烦人的幻灯片(信息学奥赛一本通-T1395)
- android 应用分析,分析 Android 应用
- orb特征 稠密特征_一种基于ORB-SLAM2的双目三维稠密建图方法技术
- SQL Server将DataTable传入存储过程(Table Value Parameter)
- DCM4CHEE 中worklist 乱码问题 dcmchee 中文乱码
- Java中this关键字的作用和用法
- 智慧城市大数据可视化系统设计心得
- 拉格朗日插值(知识整理+公式推导+板子总结)
- WPF 启动屏幕键盘
- 一战托福5个月112分 经验分享 + 备考资料大放送
- 中国为何与诺贝尔奖无缘?
- 《论文阅读》FroDO: From Detections to 3D Objects
- 在线考试防止切屏功能
- 技嘉 AORUS Radeon RX 6700 XT ELITE 12G 显示卡潮流登场
- 极化码:极化码的单项式码(Monomial Codes)表示
热门文章
- C++ 随机数生成的2种方法--生成指定范围内的随机数
- python数据写入CSV
- java游戏移动_java - Java游戏 - 如何让敌人移动? - SO中文参考 - www.soinside.com
- Spring-Boot-Bean的使用,@Repository,@Service,@Controller,@Component
- java-高并发解决方案
- img 服务器上的图片不显示图片,img显示服务器图片不显示
- oracle数据库查询人员和岗位,oracle岗位需求收集
- ios 开发中 动态库 与静态库的区别
- c语言 程序 作文,编程之乐作文600字
- mysql变量作用域,变量作用域 | 类型、变量和值 | JavaScript 权威指南