队列顺序结构C/C++实现(数据结构严蔚敏版)
1、头文件Queue.h
#include<iostream>
using namespace std;//定义4个空间,留出一个作为标志位,当Q.rear+1 / MAXQSIZE = Q.front时,说明队列已满#define MAXQSIZE 4
#define ok 1
#define error 0
#define flow 0typedef int ElemType;
typedef int Status;//定义数据类型
typedef struct{ElemType *base;int front;int rear;}SqQueue;//初始化队列
Status InitQueue(SqQueue& Q)
{Q.base = new ElemType[MAXQSIZE];if(!Q.base) exit(flow);Q.front = Q.rear = 0;return ok;
}//获取队列长度
int QueueLength(const SqQueue& Q){return ( Q.rear - Q.front+MAXQSIZE ) % MAXQSIZE;
}//删除队列的头,并返回删除的数据
Status DeQueue(SqQueue& Q, ElemType& e){if(Q.front == Q.rear)return error;Q.front = (Q.front + 1) % MAXQSIZE;return ok;
}//在队尾进行插入
Status EnQueue(SqQueue& Q, ElemType e)
{//插入到队尾if((Q.rear + 1) % MAXQSIZE == Q.front){cout<<"队列已满\n\n"<<endl;return error;}Q.base[Q.rear] = e;Q.rear = (Q.rear+1) % MAXQSIZE;return ok;
}//打印队列
Status Print(const SqQueue& Q){int a = Q.front;if(Q.front == Q.rear){cout<<"这是个空队列\n\n"<<endl;return error;}else{while(Q.rear != a){cout<<Q.base[a]<<" ";a++;}cout<<endl;return ok;}} //判断队列是否已满
Status IsFull(SqQueue& Q){if(Q.front == (Q.rear+1) % MAXQSIZE){cout<<"队列已满,请先删除再添加\n\n"<<endl;return error;} else{return ok;}}
2、测试文件test.cpp:
#include "Queue.h"int main(void)
{SqQueue Q;ElemType e;int n;InitQueue(Q);cout<<" 0------退出"<<endl;cout<<" 1------插入队列"<<endl;cout<<" 2------删除队列的首部"<<endl;cout<<" 3------队列的长度"<<endl; cout<<" 4------队列的数据如下"<<endl; cout<<"请输入你的操作"<<endl;cin>>n;while(1){switch(n){case 0:delete(Q.base); exit(flow);case 1:cout<<"输入一个数据"<<endl;if(IsFull(Q)){cin>>e;EnQueue(Q, e);cout<<endl;}break;case 2:DeQueue(Q, e);cout<<"删除的队首数据是:"<<e<<endl;cout<<endl;break;case 3:cout<<"队列的长度是:"<<QueueLength(Q);cout<<endl<<endl;break;case 4:cout<<"队列如下:"<<endl;Print(Q);break;}cout<<" 0------退出"<<endl;cout<<" 1------插入队列"<<endl;cout<<" 2------删除队列的首部"<<endl;cout<<" 3------队列的长度"<<endl; cout<<" 4------队列的数据如下"<<endl; cout<<"请输入你的操作"<<endl;cin>>n;cout<<"\n\n";}}
队列顺序结构C/C++实现(数据结构严蔚敏版)相关推荐
- 字符串静态顺序结构C/C++实现(数据结构严蔚敏版)
1.头文件String.h #include<stdio.h> #include<stdlib.h> #include<string.h> #include< ...
- 队列链式结构C/C++实现(数据结构严蔚敏版)
1.头文件Queue.h; #include<iostream> #include<iomanip>//格式控制头文件 #include<stdlib.h> usi ...
- [数据结构-严蔚敏版]P64循环队列-队列的顺序存储结构
代码如下: #include <iostream> using namespace std;const int MAXQSIZE = 10;typedef int ElemType;typ ...
- [数据结构-严蔚敏版]P61ADT Queue的表示与实现(单链队列-队列的链式存储结构)
代码如下: #include <iostream> using namespace std;typedef int ElemType;typedef struct QNode {ElemT ...
- 有关数据结构基础知识(数据结构 严蔚敏版)
1. 数据结构是一门研究非数值计算程序设计中的操作对象 以及这些对象之间的关系和操作的学科 2. 研究包括逻辑结构和存储结构 1) 逻辑结构(从具体问题抽象出来的数学模型)分为 集合结构 线性结构 树 ...
- 数据结构(严蔚敏版)习题集第三章课后标新号习题答案
#include<iostream> #include<cctype> using namespace std; /****预定义****/ #define STACK_INI ...
- 【数据结构 严蔚敏版】 查找基本操作
顺序查找过程:从表中的最后一个记录开始,逐个进行记录的关键字与给定值进行比较,若某个记录的关键字与给定值相等,则查找成功,找到所查的记录:反之,若直到第一个记录,其关键字和给定值比较都不相等,则表明表 ...
- 线性表的C/C++实现(数据结构 严蔚敏版)
下面的代码是项目文件:一个头文件.一个源文件.一个测试文件 1.头文件List.h: #include<iostream> using namespace std; #include< ...
- [数据结构-严蔚敏版]P65离散事件模拟(银行客户的离散事件驱动模拟程序)
写这个简单玩意,居然花费了我6小时+,唉!!!,还是太菜了! 中间已经起了放弃的念头了,最后还是坚持下来了! 总结: (1)漏了p = p->next (2)队列删除元素的时候,删除的是最后一个 ...
最新文章
- 如何理解导远技术手册
- Linux有问必答-如何创建和挂载XFS文件系统
- ASP.NET Core分布式项目实战(oauth2 + oidc 实现 server部分)--学习笔记
- layui上传图片,前端直接拷代码,后端……
- Investigating Div-Sum Property【数位DP】
- implements OnClickListener
- MVC 3 基本操作增加修改
- 三.rocketmq-console
- matlab挠率算法,中国科学院沈阳自动化研究所
- java新建json 数组_Java创建JSON对象
- 使用python简单免费转换视频格式
- matlab 计算图像峰值信噪比,基于Matlab计算峰值信噪比PSNR及均方根误差MSE
- 计算机中心pdca,信息中心日常运维工作PDCA持续改进.docx
- 实验三mysql查询_实验三 数据库的查询实验
- 【xubuntu】 在xubuntu系统上开启自动登陆,并自动启动一个应用程序。
- 百位明星身份证照片被曝光
- 连个字体反爬都搞不定?你还说你会爬虫?看完这篇就会了。
- 量化岗经典面试题——纸牌游戏
- 如何用墨刀画出iPhone灵动岛?
- 淘宝发布 18 年 18 件“时代宝贝”:胶卷、万能充、MP3 等
热门文章
- 【PAT乙级题库】全套总结
- Tomcat8.5的【下载、安装、启动、各种问题结局】
- 1066 Root of AVL Tree (25 分)【难 / 知识点: 平衡树 未完成】
- 指向字符串的指针为何不能用来修改此字符串
- JMeter初探五-配置元件与参数化
- easyUI的引用方式
- 计算机组成原理sop,MacBERT:MLM as correction BERT
- 中用BBP公式计算_【真课堂】7年级信息技术:数据计算
- python 多进程共享变量manager_python 进程间共享数据 multiprocessing 通信问题 — Manager...
- 拿了 30K 的 offer!