Code

  1. /*链表实现队列的一系列操作*/
  2.  
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5.  
  6. #define OK 1
  7. #define ERROR 0
  8.  
  9. typedef struct node
  10. {
  11. int data; //数据域
  12. struct node *next; //指针域
  13. }LinkQueueNode;
  14. typedef struct
  15. {
  16. LinkQueueNode *front; //头指针
  17. LinkQueueNode *rear; //尾指针
  18. }LinkQueue;
  19.  
  20. /**********************各个子函数的定义*********************/
  21. void initQueue(LinkQueue *Q); //链队列初始化
  22. int enterQueue(LinkQueue *Q,int n); //链队列入队操作
  23. void deleteQueue(LinkQueue *Q); //链队列出队操作
  24.  
  25. int main()
  26. {
  27. LinkQueue Q;
  28. int choice;
  29. while(true)
  30. {
  31. printf("*****************Please enter your choice*****************\n\n");
  32. printf(" choice 1:Queue initialization\n");
  33. printf(" choice 2:Into the queue\n");
  34. printf(" choice 3:Out of the queue\n");
  35. printf(" choice 0:exit\n\n");
  36. scanf("%d",&choice);
  37. switch(choice)
  38. {
  39. case :
  40. initQueue(&Q);
  41. break;
  42. case :
  43. int n;
  44. printf("Please enter the number into the queue elements:");
  45. scanf("%d",&n);
  46. (enterQueue(&Q,n)==)?printf("%d个元素依次进队成功\n",n):printf("%d个元素依次进队失败\n",n);
  47. break;
  48. case :
  49. deleteQueue(&Q);
  50. break;
  51. case :
  52. exit();
  53. break;
  54. default:
  55. printf("ERROR!!\n");
  56. exit();
  57. break;
  58. }
  59. }
  60. return ;
  61. }
  62.  
  63. /**********************各个子函数功能的实现*********************/
  64. void initQueue(LinkQueue *Q)
  65. { //将 Q 初始化为一个空链队列
  66. Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
  67. Q->rear=Q->front;
  68. Q->front->next=NULL;
  69. }
  70.  
  71. int enterQueue(LinkQueue *Q,int n) //进队列
  72. {
  73. LinkQueueNode *temp;
  74. int n1,n2;
  75. printf("Please enter into the queue elements in turn:\n");
  76. for(n1=;n1<n;n1++)
  77. {
  78. scanf("%d",&n2);
  79. temp=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
  80. if(temp==NULL) return ERROR; //申请空间失败
  81. temp->data=n2;
  82. temp->next=NULL;
  83. Q->rear->next=temp;
  84. Q->rear=temp; //队尾指针后移
  85. }
  86. return OK;
  87. }
  88.  
  89. void deleteQueue(LinkQueue *Q)
  90. {
  91. int a;
  92. LinkQueueNode *temp;
  93. if(Q->front==Q->rear) //队为空,出栈失败
  94. {
  95. printf("An empty Queue error!!!!\n");
  96. }
  97. else
  98. {
  99. temp=Q->front->next;
  100. a=temp->data;
  101. Q->front->next=temp->next;
  102. if(Q->front==temp) //如果队中只有一个元素X,则X出队后成为空队
  103. {
  104. Q->rear=Q->front;
  105. }
  106. free(temp); //释放存储空间
  107. printf("队顶元素%d出队成功.\n",a);
  108. }
  109. }

C语言实现链队列的初始化&进队&出队的更多相关文章

  1. C语言实现循环队列的初始化&进队&出队&读取队头元素&判空-2

    /*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Si ...

  2. C语言实现链栈的初始化&进栈&出栈&读取栈顶元素

    /*链表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typede ...

  3. 队列的C++实现(数组)——创建-进队-出队-返回队首元素-清空队列栈-处理队列

    队列的数组实现,从队尾进入,对头删除. 队列长度用标志变量size,它是独立于front和rear的一个变量.size == 0,队列为空.size == capacity,满队列. 一.结点声明 s ...

  4. 队列的含义以及C语言实现顺序队列

    队列,和栈一样,也是一种对数据的"存"和"取"有严格要求的线性存储结构. 什么是队列 与栈结构不同的是,队列的两端都"开口",要求数据只能从 ...

  5. C语言实现循环队列

    今日在处理数据存储的问题中,数据占用的空间较大,在询问之下,提及循环队列. 没有学习过的我,想想就是头大,只能慢慢从网上找资料,一个字母一个字母的敲,最后,还是慢慢的对队列有了一些理解 对于循环队列有 ...

  6. C语言数据结构-链式队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-链式队列的实现-C语言 typedef struct QNode { int data; struct QNode *next; }QNode,*QueuePtr; typedef st ...

  7. 数据结构 - 链队列的实行(C语言)

    数据结构-链队列的实现 1 链队列的定义 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已, 我们把它简称为链队列.为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指 ...

  8. C语言实现链式队列

    链式队列,简称"链队列",即使用链表实现的队列存储结构. 链式队列的实现思想同顺序队列类似,只需创建两个指针(命名为 top 和 rear)分别指向链表中队列的队头元素和队尾元素, ...

  9. C语言——循环队列和链队列的基本运算

    // 循环队列#include <stdio.h> #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20 ...

随机推荐

  1. 一小时学会ECMAScript6新特性(一)

    ECMAScript 简介 简称es,是一套标准,javascript就是使用这套标准的语言.主流的浏览器使用的是ECAMScript5,ECAMScript6(ECAMScript2015)是一涛新 ...

  2. PHP 关于判断输入日期是否合法

    合法要求 一年仅十二个月 4,6,9,11月仅30天,1,3,5,7,8,10,12月仅31天 闰年2月29天,否则28天 输入的变量年,月,日为数字 代码: <?php //PHP中判断输入的 ...

  3. Navicat Premium 12 (64位)实现连接Oracle 11 (64位)

    查看Oracle的版本 select * from v$version 我这里是11.2的64位的版本,然后从官网下载相应版本的客户端. 下载相应版本的客户端 官网地址:https://www.ora ...

  4. 新装云服务器没有iptables 文件,并且无法通过service iptables save操作

    在安装zookeeper时,需要放开端口2181 按照视频教程在 /etc/sysconfig/ 下对iptables 文件进行编辑,但是该目录下没有此文件 通过强行写iptables -P  OUT ...

  5. S2.1 修复图像小程序(简单版)

    用OpenCV自带的inpaint()演示 CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask, OutputArray ...

  6. 微信小程序开发---视图层(View)

    WXML WXML能力: 数据绑定 列表渲染 条件渲染 模板 事件 数据绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可作用于内容,组件属性(需要在双引号之内),控制属性(需要在 ...

  7. CSS-单位em 和 rem

    1,em单位(css3新增单位) em:就是一种长度单位,它是参照当前元素的字号,如果没有设置,就参照父容器,一直到浏览器的默认字号大小 em 是相对长度单位(参照父元素),其参照当前元素字号大小,如 ...

  8. vue + websocket 的使用

    阳光正好,我们正在努力前行. 一.引言 初始使用websocket ,一开始看文档的时候,觉得很简单,只需要创建websocket实例,然后有几个监听打开连接,监听关闭连接,监听连接异常等方法.但是, ...

  9. Session Cookie介绍和使用

    Cookie机制 Cookie机制 Cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器. IETF RFC 2965 HTTP状态管理机制是一种通用的cookie规范. W ...

  10. window server 2008 安装Oracle10g

    oracle安装都大同小异. 开始安装步骤 输入完之后点击下一步 这时候稍等一会儿. 这时候也要稍等一会儿. 直接安装. 设置口令管理,设置SCOTT的密码为tiger就好了. 这时候稍等一会儿. o ...