顺序队列

1.初始化:

front=-1;
rear=-1;

2.判空条件

font=rear;

3.队列已满条件

rear=max-1;

代码:

#include<stdio.h>
#include<stdlib.h>
#define maxn 6typedef struct node
{int date[maxn];int font;int rear;
}SeqQueue;void Init(SeqQueue* SQ)//初始化队列
{SQ->font = -1;SQ->rear = -1;
}void EnSeqQueue(SeqQueue* SQ, int value)//入队
{if (SQ->rear == maxn - 1){printf_s("队列已满");exit(0);}else{SQ->date[++SQ->rear] = value;printf_s("入列成功\n");}
}int DeSeqQueue(SeqQueue* SQ)
{if (SQ->font == SQ->rear){printf_s("队列为空");return 0;}else{int value;value = SQ->date[++SQ->font];return value;}
}

循环队列

1.初始化:

front=0;
rear=0;

2.判空条件

font=rear;

3.队列已满条件
少用一个元素空间,指定队头指针所在的位置不用来存放元素。这样当队尾的指针绕一圈追上头指针时队列已满。

font=(rear+1)%max;

代码:

#include<stdio.h>
#include<stdlib.h>
#define m 5
#define maxn m+1typedef struct node
{int date[maxn];int font;int rear;
}SeqQueue;void Init(SeqQueue* SQ)//初始化队列
{SQ->font =0;SQ->rear =0;
}void EnSeqQueue(SeqQueue* SQ, int value)//入队
{if ((SQ->rear+1)%maxn==SQ->font){printf_s("队列已满");exit(0);}else{SQ->rear = (SQ->rear + 1) % maxn;//循环SQ->date[SQ->rear] = value;printf_s("入列成功\n");}
}int DeSeqQueue(SeqQueue* SQ)
{if (SQ->font == SQ->rear){printf_s("队列为空");return 0;}else{SQ->font = (SQ->font + 1) % maxn; //循环int value;value = SQ->date[SQ->font];return value;}
}

链式队列

为了使队列结构性更强,将头指针与尾指针封装在一个节点中。
1.初始化:让头指针与尾指针一同指向一个空节点。

2.判空条件

font=rear;

3.无队列已满情况

代码:

#include<stdio.h>
#include<stdlib.h>typedef struct node
{int date;struct node* next;
}LQNode;typedef struct Queue
{LQNode* font;LQNode* rear;
}LQueue;void Init(LQueue* LQ)
{LQNode* node;node = (LQNode*)malloc(sizeof(LQNode));if (node == NULL){printf_s("申请空间失败\n");exit(0);}else{node->next = NULL;LQ->font = LQ->rear = node;//初始化指向同一个节点}
}void En_Link_SeqQueue(LQueue* LQ, int value)
{LQNode* node;node = (LQNode*)malloc(sizeof(LQNode));if (node == NULL){printf_s("申请空间失败\n");exit(0);}else{node->next = NULL;node->date = value;LQ->rear->next=node;LQ->rear = node;}
}int De_Link_SeqQueue(LQueue* LQ)
{if (LQ->font == LQ->rear){printf_s("队列为空");return 0;}else{int value;LQNode* node;node = LQ->font->next;//头指针指向的第一个节点value = node->date;LQ->font->next = node->next; //头指针后移free(node);//释放掉没用用处的空间if (LQ->font->next == NULL) //表明队列也经为空了LQ->rear = LQ->font;return value;}
}

c语言队列(顺序队列,循环队列,链式队列)相关推荐

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

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

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

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

  3. 数据结构——链式队列解析(C语言版)

    摘自:数据结构学习--链式队列解析(C语言版) 作者:正弦定理 发布时间:2020-11-26 21:07:08 网址:https://blog.csdn.net/chinesekobe/articl ...

  4. 数据结构之顺序队列和链式队列常用的一些操作

    顺序队列是队列的顺序存储结构,顺序队列实际上是运算受限的顺序表.和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素.由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示 ...

  5. 刁肥宅手笔:纯C语言实现链式队列的相关操作

    先上图,以图服人: 图一 程序运行截图1 图二 程序运行截图2 上代码: 头文件LinkQueue.h: /*LinkQueue.h*/#ifndef LINKQUEUE_H_INCLUDED #de ...

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

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

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

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

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

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

  9. (c语言数据结构)用链式队列的方式实现输入12345,输出12345操作——期末数据结构程序设计

    用链式队列的方式实现输入12345,输出12345操作 文章目录 用链式队列的方式实现输入12345,输出12345操作 1.队列的定义 2.队列的初始化 3.判空操作 4.入队操作 5.出队操作 6 ...

最新文章

  1. cmd查看所有数据库 db2_DB2数据库常用命令集
  2. 独家 | 6种让Python程序变慢的坏习惯
  3. LuManager使用中典型问题整理集合
  4. 第一次运行Spring Boot有感
  5. .Net之配置文件自定义
  6. 工作分流是什么意思_【嘉陵特装要闻】重庆嘉陵召开持续推进职工分流安置工作布置会...
  7. 智能会议系统(24)---linphone的架构和初始化
  8. C语言之文件读写探究(六):fscanf、fprintf(格式化读写文件)
  9. XML解析:PULL解析
  10. CRT工具连接Linux操作手册
  11. 聪聪用计算机计算235乘49,四年级数学题库
  12. 有的字体,用黑色渲染,效果是灰色
  13. H3CSE园区-SSH
  14. (vue)监听浏览器刷新
  15. python绘图小dome
  16. 未来汽车是什么样?取消后视镜的车型将于2019年面世 | 行业
  17. c语言负2是偶数吗,负2是偶数还是奇数 奇偶数有正负之分吗
  18. ::before 和:after的区别
  19. 智能算法集成测试平台V0.1实战开发
  20. C#开发技术 计算器(二进制、八进制、十进制)

热门文章

  1. java canonicalize_java.io.IOException:java.io.WinNTFileSystem.canonicalize0处的无效参数
  2. php大号字体代码,支持中文字母数字、自定义字体php验证码代码
  3. vscode怎么用命令行打开本地项目(code .)
  4. python codecs模块(用于执行编码转换之类的)
  5. python 实现队列功能 queue insert() pop()
  6. Intel Realsense D435 测试摄像头在不同曝光值下的帧生成时间(防止曝光时间过长导致fps下降)auto_exposure_priority(没成功)
  7. python opencv imread()函数 (从文件加载图像)
  8. 前端HTML、JavaScript、CSS技术的日常记录
  9. free 命令查看linux的内存使用情况
  10. 3级联动 ajax java_ajax实现三级联动的基本方法