数据结构实验4 队列的表示与操作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注意事项:
在磁盘上创建一个目录,专门用于存储数据结构实验的程序。因为机房机器有还原卡,请同学们将文件夹建立在最后一个盘中,以学号为文件夹名。
实验四队列的表示与操作
一、实验目的
1。掌握队列的掌握队列的类型定义,掌握循环队列的表示与实现方法
2.掌握队列的基本操作:判空、元素入队、出队,删除队头元素
基本操作:
InitQueue()构造一个空队列Q
QueueEmpty(Q) 判断队列是否为空
QueueLenght(Q)返回队列Q的元素个数,即队列的长度
GetHead(Q,&e)取队列Q的队头元素,并用e返回
InQueue(&Q,e) 将元素e入队列
OutQueue(&Q,&e)删除非空队列Q的队头元素,并用e返回其值
二、实验要求
1.认真阅读和掌握本实验的算法。
2.上机将本算法实现。
3.将程序补完整,打印出程序的运行结果,并结合程序进行分析。
三、实验内容
程序:设计一个循环队列的顺序表示和实现的演示程序
参考程序如下:
#include
#include
typedef int DataType;
#define Maxsize 100 /*最大队列长度*/
typedef struct {
DataType data[Maxsize]; /*初始化的动态分配存储空间*/
int front; /*头指针,若队列不空,指向队列头素元素的前一位置*/
int rear; /*尾指针,若队列不空,指向队列尾元素位置*/
}SeqQueue,*PSeqQueue;
PSeqQueue InitQueue(){
/*构造一个空队列Q*/
}
int QueueEmpty(PSeqQueue Q){
/*若队列Q为空队列,则返回TRUE,否则返回FALSE*/
}
int QueueLength(PSeqQueue Q){
/*返回Q的元素个数,即为队列的长度*/
}
int GetHead(PSeqQueue Q,DataType &e){
/*若队列不为空,则用e返回Q的队头元素,并返回OK;否则返回ERROR*/
}
int InQueue(PSeqQueue &Q,DataType e){
/*插入元素e为Q的新的队尾元素*/
}
int OutQueue(PSeqQueue &Q,DataType &e){
/*若队列不空,则删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR*/
}
void main(){
PSeqQueue Q;
int select;
DataType e;
if ((Q=InitQueue())==NULL)
cout<<"分配失败,即将退出程序!\n";
else/*否则显示队列操作的菜单,并选择相应的基本操作*/
do {
cout<<"1:判断队列是否为空\n";
cout<<"2:测试队列的长度\n" ;
cout<<"3:取队头元素值\n";
cout<<"4:向队列中插入一新元素\n";
cout<<"5:删除队列中一元素\n";
cout<<"0:结束\n";
cout<<"\n请输入您的选择:";
cin>>select;
cout< switch (select) { case 1: if (QueueEmpty(Q)==1) cout<<"队列为空\n"; else cout<<"队列不为空\n";break; case 2: cout<<"队列长度为:"< case 3: if(GetHead(Q,e)==-1) cout<<"队列为空\n"; else cout<<"队首元素为:"< case 4: cout<<"请输入要插入的元素值:"; cin>>e; if(InQueue(Q,e)==-1) cout<<"\n队列满\n"; else cout<<"\n元素成功插入\n";break; case 5: if(OutQueue(Q,e)==-1) cout<<"队列空,无数据可删\n"; else cout<<"删除元素为:"< case 0: cout<<"操作结束\n";break; default: cout<<"输入选择出错!\n"; }/*switch*/ cout< }while (select); }/*main_end*/