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++链式队列基本操作相关推荐

  1. 链队列的基本运算java_链式队列基本操作的实现问题

    问题描述:用链式存储方式实现队列的基本操作 涉及变量:front:Node型自定义变量,指向队首元素 rear:Node型自定义变量,指向队尾元素 涉及教材:<数据结构--Java语言描述(第2 ...

  2. (C语言版)栈和队列(一)——实现链式栈和链式队列的基本操作以及遇到的问题

    http://blog.csdn.net/fisherwan/article/details/20055179 首先要感谢这位大牛的一篇博客,地址如下:http://blog.csdn.net/hgu ...

  3. 链式队列的基本操作(入队、出队、遍历队列、清空队列)

    链式队列是一种特殊的链表,只能在尾部添加,在头部删除,类似于排队问题,先入先出 代码如下 #include<stdio.h> #include<malloc.h> #inclu ...

  4. 【数据结构】链式队列的实现(C语言)

    队列的链式存储称为链式队列.链式队列就是一个特殊的单链表,对于这种特殊的单链表,它的插入和删除操作规定在单链表的不同端进行.链式队列的队首和队尾指针分别用front和rear表示. 链式队列要掌握以下 ...

  5. 数据结构 - 队列简介 及 1个简单的c语言链式队列代码实现

    1. 队列的定义 所谓队列(queue)就是一种能实现"先进先出"的一种线性存储结构. 跟栈有点类似,  例如栈只有1个出入口, 任何元素进入或者离开栈都必须经过同1个出入口(栈顶 ...

  6. c语言建立队列(顺序队列、循化队列和链式队列)

    c语言建立队列 一.顺序队列 队列的顺序存储结构 顺序队列的讨论 "下溢"现象 "真上溢"现象 "假上溢"现象 二.如何解决"假上 ...

  7. c语言队列(顺序队列,循环队列,链式队列)

    顺序队列 1.初始化: front=-1; rear=-1; 2.判空条件 font=rear; 3.队列已满条件 rear=max-1; 代码: #include<stdio.h> #i ...

  8. c语言定义链式队列用菜单,数据结构之---C语言实现链式队列

    //链式队列的存储 //杨鑫 #include #include typedef int QElemType; //定义节点 typedef struct QNode { QElemType data ...

  9. 链式队列的实现(头文件及源程序)

    链式队列的实现(头文件及源程序) Linkedqueue.h #ifndef __LINKEDQUEUE_H__ #define __LINKEDQUEUE_H__//元素类型定义 typedef i ...

最新文章

  1. mysql innodb_data_file_path_关于innodb_data_file_path设置
  2. 学python的基础-老司机学python篇:第一季(基础速过、机器学习入门)
  3. MyBatis整合ehcache实现二级缓存
  4. 201521123011 《Java程序设计》第8周学习总结
  5. 前端学习笔记之 JavaScript WebAPIs(整理)
  6. 烦人的幻灯片(信息学奥赛一本通-T1395)
  7. android 应用分析,分析 Android 应用
  8. orb特征 稠密特征_一种基于ORB-SLAM2的双目三维稠密建图方法技术
  9. SQL Server将DataTable传入存储过程(Table Value Parameter)
  10. DCM4CHEE 中worklist 乱码问题 dcmchee 中文乱码
  11. Java中this关键字的作用和用法
  12. 智慧城市大数据可视化系统设计心得
  13. 拉格朗日插值(知识整理+公式推导+板子总结)
  14. WPF 启动屏幕键盘
  15. 一战托福5个月112分 经验分享 + 备考资料大放送
  16. 中国为何与诺贝尔奖无缘?
  17. 《论文阅读》FroDO: From Detections to 3D Objects
  18. 在线考试防止切屏功能
  19. 技嘉 AORUS Radeon RX 6700 XT ELITE 12G 显示卡潮流登场
  20. 极化码:极化码的单项式码(Monomial Codes)表示

热门文章

  1. C++ 随机数生成的2种方法--生成指定范围内的随机数
  2. python数据写入CSV
  3. java游戏移动_java - Java游戏 - 如何让敌人移动? - SO中文参考 - www.soinside.com
  4. Spring-Boot-Bean的使用,@Repository,@Service,@Controller,@Component
  5. java-高并发解决方案
  6. img 服务器上的图片不显示图片,img显示服务器图片不显示
  7. oracle数据库查询人员和岗位,oracle岗位需求收集
  8. ios 开发中 动态库 与静态库的区别
  9. c语言 程序 作文,编程之乐作文600字
  10. mysql变量作用域,变量作用域 | 类型、变量和值 | JavaScript 权威指南