• 大家好!我是一名二本学校努力的大二学生,正在努力学习数据结构,打算将其所有结构的源码写出与大家一起交流,期待与大家一起进步,互相成长!!!

循环队列

  • 一组地址连续的储存单元依次存放从队列头到队尾的元素,分别用front与rear指针指示队列头元素及队列尾元素的位置,并定义初始值为0,随后逐步增加并取余总空间的方式来确定位置。

完整代码如下:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define OVERFLOW -2
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0
typedef int Status;
#define MAXQSIZE 5 /* 最大队列长度(对于循环队列,最大队列长度要减1) */
typedef int QElemType;
typedef struct{QElemType *base; /* 初始化的动态分配存储空间 */int front; /* 头指针,若队列不空,指向队列头元素 */int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */}SqQueue;
Status InitQueue(SqQueue *Q){ /* 构造一个空队列Q */Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));if(!Q->base) /* 存储分配失败 */exit(OVERFLOW);Q->front=Q->rear=0;return OK;}int QueueLength(SqQueue Q){ /* 返回Q的元素个数,即队列的长度 */return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}Status EnQueue(SqQueue *Q,QElemType e){ /* 插入元素e为Q的新的队尾元素 */if((Q->rear+1)%MAXQSIZE==Q->front) /* 队列满 */return ERROR;Q->base[Q->rear]=e;Q->rear=(Q->rear+1)%MAXQSIZE;return OK;}Status DeQueue(SqQueue *Q,QElemType *e){ /* 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR */if(Q->front==Q->rear) /* 队列空 */return ERROR;*e=Q->base[Q->front];Q->front=(Q->front+1)%MAXQSIZE;return OK;}Status QueuePrint(SqQueue Q){ int i;i=Q.front;while(i!=Q.rear){printf("%d ",*(Q.base+i));i=(i+1)%MAXQSIZE;}printf("\n");return OK;}int main(){Status j;int i=0,l;QElemType e;SqQueue Q;InitQueue(&Q);printf("请输入整型队列元素(不超过%d个),-1为提前结束符: ",MAXQSIZE-1);do{scanf("%d",&e);if(e==-1)break;i++;EnQueue(&Q,e);}while(i<MAXQSIZE-1);printf("队列长度为: %d\n",QueueLength(Q));printf("连续%d次由队头删除元素,队尾插入元素:\n",MAXQSIZE);for(l=1;l<=MAXQSIZE;l++){DeQueue(&Q,&e);printf("删除的元素是%d,请输入待插入的元素: ",e);scanf("%d",&e);EnQueue(&Q,e);}l=QueueLength(Q);printf("现在队列中的元素为: \n");QueuePrint(Q);printf("共向队尾插入了%d个元素\n",i+MAXQSIZE);return 0;}

运行结果:

对于我的理解,循环队列的存储方式与顺序表的存储方式相似,需要注意的是通过取余来对队头与队尾的位置不断更新定位,其余的操作都比较简单。

大家如果浏览了我的博客发现我有错误的地方,麻烦谅解,并在评论中告诉我。谢谢!

  • 加油加油加油!!!

数据结构(严蔚敏版)循环队列——C语言相关推荐

  1. 数据结构(严蔚敏版)习题集第三章课后标新号习题答案

    #include<iostream> #include<cctype> using namespace std; /****预定义****/ #define STACK_INI ...

  2. [数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构

    代码如下: #include <iostream> using namespace std;const int MAXQSIZE = 10;typedef int ElemType;typ ...

  3. 队列链式结构C/C++实现(数据结构严蔚敏版)

    1.头文件Queue.h; #include<iostream> #include<iomanip>//格式控制头文件 #include<stdlib.h> usi ...

  4. 队列顺序结构C/C++实现(数据结构严蔚敏版)

    1.头文件Queue.h #include<iostream> using namespace std;//定义4个空间,留出一个作为标志位,当Q.rear+1 / MAXQSIZE = ...

  5. [数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)

    代码如下: #include <iostream> using namespace std;typedef int ElemType;typedef struct QNode {ElemT ...

  6. 有关数据结构基础知识(数据结构 严蔚敏版)

    1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...

  7. [数据结构-严蔚敏版]P65离散事件模拟(银行客户的离散事件驱动模拟程序)

    写这个简单玩意,居然花费了我6小时+,唉!!!,还是太菜了! 中间已经起了放弃的念头了,最后还是坚持下来了! 总结: (1)漏了p = p->next (2)队列删除元素的时候,删除的是最后一个 ...

  8. 【数据结构 严蔚敏版】 二叉树 基本操作

    计算机科学中,二叉树是每个结点最多有两个子树的树结构.通常子树被称作"左子树"(left subtree)和"右子树"(right subtree).二叉树常被 ...

  9. C/C++实现数据结构严蔚敏版的一些注意事项(指南)

    建议实现的时候用C++语言进行实现,因为书中的有些参考伪代码都是通过C++实现的当用C语言替换的时候作为新手的我,找起bug来有点费劲. C语言实现顺序表的过程中的注意事项: 1, 书中绪论1.3,抽 ...

  10. 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)

    1.头文件String.h #include<stdio.h> #include<stdlib.h> #include<string.h> #include< ...

最新文章

  1. 900万张标注图像,谷歌发布Open Images最新V3版
  2. 稳健地估计单应性矩阵,需要几个特征点?
  3. Oracle 启动,建表
  4. mysql6.0.7_MySQL Workbench v6.0.7 正式版
  5. C++版数据结构继承关系图
  6. 树莓派进阶之路 (014) - 树莓派远程连接的三种方式总结
  7. 像Excel一样使用python进行数据分析(1)
  8. CF993E Nikita and Order Statistics
  9. redis:set数据类型和操作
  10. 微机笔记——1.微型计算机概述
  11. 错误调试:Ubuntu-Tensorflow ,程序手动结束后,GPU的显存没有被释放
  12. 如何在Rancher 2.0上快速部署Datadog
  13. 基础篇:源码 Linux+Apache+PHP+MySQL环境配置方法-08CMS网站
  14. Python下载和安装图文教程[超详细]
  15. linux 如何添加用户,Linux 怎么添加用户(adduser)
  16. 利用SuperMap的水文分析提取山脊线和山谷线
  17. mac蓝牙鼠标总是自己断开_解决Mac蓝牙鼠标和键盘经常断开的问题
  18. android 遥控器配置文件,[转载]android万能遥控器之一--前言及发射部分的简单实现...
  19. 设计一个长方形类。成员变量包括:长度和宽度,成员函数除包括计算周长和计算面积外, 还包括用set方法来设置长方形的长度和宽度,以及用get的方法来获得长方形的长度和宽度 最后,编写一个测试程序来测试所
  20. 《Network Science》:一本关于网络科学的书

热门文章

  1. 深度学习MRI重建综述
  2. 协同过滤与隐语义模型推荐系统实例3: 基于矩阵分解(SVD)的推荐
  3. 2022/11/4电子体温计方案_单片机
  4. 125种滤镜:GPUImage
  5. 【交换机的高级特性、RSTP和MSTP】交换理论测试题(已纠完错)
  6. 浙江省机电工程师职称评审条件及流程
  7. Maven不能下载Aspose解决方案
  8. 标准体重和饮食控制计算器
  9. 电商系统商品中心产品设计
  10. Linux Nginx版本升级方案