直接上代码

1 #include <stdio.h>
2 #include <stdlib.h>
3
4 typedef struct Node
5 {
6 int data;
7 struct Node* next;
8 }QueueNode;
9
10 typedef struct LinkList
11 {
12 QueueNode* head;
13 QueueNode* rear;
14 }LinkList;
15
16  void initLinkQueue(LinkList* Q)
17 {
18 Q->head=Q->rear=NULL;
19 }
20
21  int isEmpty(LinkList* Q)
22 {
23 return Q->head==NULL&&Q->rear==NULL;
24 }
25
26  void inQueue(LinkList* Q,int item)
27 {
28 QueueNode* pi=(QueueNode*)malloc(sizeof(QueueNode));
29 if(pi==NULL)
30 {
31 printf("分配内存失败!\n");
32 exit(1);
33 }
34 pi->data=item;
35 pi->next=NULL;
36 if(isEmpty(Q))
37 {
38 Q->head=pi;
39 Q->rear=pi;
40 }
41 else
42 {
43 Q->rear->next=pi;
44 Q->rear=pi;
45 }
46 }
47
48
49 int outQueue(LinkList* Q)
50 {
51 QueueNode* pdel;
52 int temp;
53 if(isEmpty(Q))
54 {
55 printf("There is no element!\n");
56 exit(1);
57 }
58 temp=Q->head->data;
59 pdel=Q->head;
60 Q->head=Q->head->next;
61 if(Q->head==NULL)
62 Q->rear=NULL;
63 free(pdel);
64 return temp;
65 }
66
67 int peepQueue(LinkList* Q)
68 {
69 if(Q->head==NULL)
70 {
71 printf("There is no element!\n");
72 exit(1);
73 }
74 return Q->head->data;
75 }
76
77
78 /* 6.清除链队中的所有元素 */
79 void clearQueue(LinkList* Q)
80 {
81 QueueNode* temp=Q->head;
82 while(temp)
83 {
84 Q->head=Q->head->next;
85 free(temp);
86 temp=Q->head;
87 }
88 Q->rear=NULL;
89 }
90
91
1 #include "LinkQueue.h"
2
3 int main()
4 {
5 int temp;
6 LinkList* Q=(LinkList*)malloc(sizeof(LinkList));
7 initLinkQueue(Q);
8 inQueue(Q,10);
9 temp=peepQueue(Q);
10 printf("%d\n",temp);
11 temp=isEmpty(Q);
12 printf("isEmpty: %d\n",temp);
13 temp=outQueue(Q);
14 printf("%d\n",temp);
15 temp=isEmpty(Q);
16 printf("isEmpty: %d\n",temp);
17 inQueue(Q,20);
18 inQueue(Q,11);
19 inQueue(Q,19);
20 temp=peepQueue(Q);
21 printf("%d\n",temp);
22 clearQueue(Q);
23 temp=isEmpty(Q);
24 printf("isEmpty: %d\n",temp);
25
26 }

转载于:https://www.cnblogs.com/hstcghost/archive/2010/11/09/1873170.html

数据结构——队列(C语言实现)相关推荐

  1. 数据结构---队列C语言实现

    #include <stdio.h> #include <stdlib.h> //队列大小 #define SIZE 1024 static int queue[SIZE] = ...

  2. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解

    目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...

  3. 循环队列–C语言实现–数据结构

    循环队列–C语言实现–数据结构 目录 循环队列C语言实现数据结构 目录 一 要求 二 循环队列 三 循环队列的算法设计 1 建立循环队列 2 置空队列 3 入队 4 出队 5 打印队 四 程序 1 程 ...

  4. 数据结构——队列的C语言代码实现

    系列文章目录 数据结构--顺序表的C语言代码实现 数据结构--八种链表的C语言代码实现 数据结构--栈的C语言代码实现 数据结构--队列的C语言代码实现 数据结构--堆的C语言代码实现 文章目录 系列 ...

  5. 资料分享:送你一本《数据结构(C语言版)》电子书!

    要想写出可复用.可扩展.易维护.灵活性好的代码,「数据结构」这一关必须要过啊! 在数据结构与算法的众多教材中,奉为经典的当属清华大学严蔚敏老师的著作.很多学校也选择这本书作为考研指定教材. 正在学习数 ...

  6. 资料分享:送你一本《数据结构(C#语言版)》电子书!

    对于信息类专业的学生而言,数据结构与算法是一门必修的课程.只有学好这门课程,熟练掌握线性表.栈.队列.树.图等基本结构,以及在这些结构上的各种算法,才能利用计算机去解决实际问题. 如何学好这门课程呢, ...

  7. 数据结构(C语言版) 第 六 章 图 知识梳理 + 习题详解

    目录 一. 图的基本定义和术语 一.图的基本概念 1.度 2.连通 (1)连通图 (2)强连通/强连通图 3.回路 4.完全图 二.图的三种存储结构 1.邻接矩阵表示法 2.邻接表(链式)表示法 3. ...

  8. 如何建立队列c语言_什么是优先队列

    前言 我们之前已经介绍过队列-C语言实现,它们是先入先出的,这很容易用平常的排队来理解.但是如果这个队列要支持有紧急情况的人先出队呢?原先那种队列就不再适用了,我们需要使用本文所提到的特殊队列--优先 ...

  9. 创建队列 c语言_在C中创建队列

    创建队列 c语言 A queue in C is basically a linear data structure to store and manipulate the data elements ...

  10. 数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著

    数据结构(C语言版 第2版)课后习题答案 严蔚敏 等 编著,仅供参考,还是自己认真做了再看 第1章  绪论 5.选择题 (1)在数据结构中,从逻辑上可以把数据结构分成(  C ). A.动态结构和静态 ...

最新文章

  1. Windows LTSC、LTSB、Server 安装 Windows Store 应用商店
  2. 常考数据结构与算法:用两个栈实现队列
  3. 读书笔记 effective c++ Item 49 理解new-handler的行为
  4. 【正一专栏】欧冠小组赛第四轮综述——有钱就能风清扬
  5. Windows 10 Threshold 2 升级记录
  6. win10怎么设置默认输入法_win10系统输入法失效打不了字怎么办
  7. 基于GaussDB(DWS)的全文检索特性,了解一下?
  8. UE4之模型格式介绍
  9. java异常处借接错书_利用Java异常机制实现模拟借书系统
  10. Sql server备份数据库不执行
  11. Android期末项目2048小游戏
  12. 正则+案例:验证座机号码,过滤敏感词
  13. php导出excel列宽,PHP导出Excel 之 Spreadsheet_Excel_Writer
  14. Microsemi Libero使用技巧7——离线安装IP Core
  15. 自动跟圈,不要来回编辑的偷懒小技巧
  16. MATLAB/simulink仿真 光伏蓄电池恒流恒压充电 系统启动运行在恒流充电模式
  17. CANopen通讯基础
  18. UCOSIII-任务管理(上)
  19. python爬虫-多线程小说批量下载
  20. 随记(浅谈误导--交流的断章取义)

热门文章

  1. WD1600AAJS AAKS 固件 数据恢复
  2. Kubernetes1.13.1部署Kuberneted-dashboard v1.10.1
  3. 在64位linux下编译32位程序
  4. docker学习实践之路[第一站]环境安装
  5. 中国人工智能学会通讯——机器人组件技术在智能制造系统中的应用
  6. 《微信小程序:开发入门及案例详解》—— 3.4 小结
  7. JAVA String 相加编译器发生了什么?
  8. jQuery 入门教程(1): 概述
  9. OSPF如何选举DR/BDR规则
  10. Mathematica该注意的两种特殊的输入方式(blanksequence and ruledelayed)