注意事项:
在磁盘上创建一个目录,专门用于存储数据结构实验的程序。
因为机房机器有还原卡,请同学们将文件夹建立在最后一个盘中,以学号为文件夹名。
实验四队列的表示与操作
一、实验目的
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 <iostream.h>
#include <malloc.h>
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<<endl;
switch (select) {
case 1:
if (QueueEmpty(Q)==1) cout<<"队列为空\n";
else cout<<"队列不为空\n";break;
case 2:
cout<<"队列长度为:"<<QueueLength(Q)<<endl;break;
case 3:
if(GetHead(Q,e)==-1) cout<<"队列为空\n";
else cout<<"队首元素为:"<<e<<endl;break;
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<<"删除元素为:"<<e;break;
case 0:
cout<<"操作结束\n";break;
default:
cout<<"输入选择出错!\n";
}/*switch*/
cout<<endl<<endl;
}while (select);
}/*main_end*/。