最新队列操作实验报告范文word版 12页.docx
《最新队列操作实验报告范文word版 12页.docx》由会员分享,可在线阅读,更多相关《最新队列操作实验报告范文word版 12页.docx(10页珍藏版)》请在冰豆网上搜索。
最新队列操作实验报告范文word版12页
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!
==本文为word格式,下载后可方便编辑和修改!
==
队列操作实验报告
篇一:
栈和队列基本操作实验报告
实验二堆栈和队列基本操作的编程实现
【实验目的】
堆栈和队列基本操作的编程实现
要求:
堆栈和队列基本操作的编程实现(2学时,验证型),掌握堆栈和队列的建立、进栈、出栈、进队、出队等基本操作的编程实现,存储结构可以在顺序结构或链接结构中任选,也可以全部实现。
也鼓励学生利用基本操作进行一些应用的程序设计。
【实验性质】
验证性实验(学时数:
2H)
【实验内容】
内容:
把堆栈和队列的顺序存储(环队)和链表存储的数据进队、出队等运算其中一部分进行程序实现。
可以实验一的结果自己实现数据输入、数据显示的函数。
利用基本功能实现各类应用,如括号匹配、回文判断、事物排队模拟、数据逆序生成、多进制转换等。
【实验分析、说明过程】
【思考问题】
【实验小结】(总结本次实验的重难点及心得、体会、收获)
【附录-实验代码】
篇二:
队列存储与操作实验报告
实验四队列存储与操作
一.实验目的
1、掌握队列顺序存储结构(循环队列)及实现及操作
2、掌握队列的链接存储结构及实现及操作
二.实验内容
1、建立一个空顺序存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。
2、建立一个空链式存储结构队列;对已建立的队列进行插入、删除、取队头元素等基本操作。
三、详细设计:
1、顺序队列的实现:
#include
usingnamespacestd;
constintSize=100;
typedefcharDataType;
classCirQueue
{
public:
CirQueue(){}~CirQueue(){}voidEnQueue(DataTypex){if((rear+1)%Size==front){}cout<<"队列已经满了"<};
}data[rear]=x;cout<intmain()
{
intindex;DataTypetemp;do{cout<<"**********************************"<>index;if(index==5){return0;}switch(index){case1:
cout<<"请输入要入队的元素"<>temp;a.EnQueue(temp);break;temp=a.GetQueue();if(temp!
=0){}cout<<"队头的元素为"<break;temp=a.DeQueue();if(temp!
=0){}cout<<"出队的元素为"<break;booltemp;temp=a.isEmpty();if(temp){cout<<"空队"<}}break;}while(index);return0;
2、链队列的实现:
#includeusingnamespacestd;
constintSize=100;typedefcharDataType;structNode
{
};
classLinkQueue{
public:
LinkQueue(){}~LinkQueue(){}voidEnQueue(DataTypex){}DataTypeGetQueue()//取?
队ó头?
{if(isEmpty()){}cout<<"队ó列为a空?
"<data=x;s->next=NULL;//申Θ?
请?
一?
个?
数簓据Y域?
为aX的?
结á点?
srear->next=s;rear=s;autohead=newNode;head->next=NULL;front=rear=head;DataTypedata;Node*next;
};}returnfront->next->data;DataTypeDeQueue(){}intisEmpty()//是?
否?
为a空?
{}Node*front,*rear;//队ó头?
和í队ó尾2指?
针?
if(front==rear){}else{}return0;return1;if(isEmpty()){}autop=newNode;//用?
于?
暂Y存?
队ó头?
元a素?
DataTypex;//用?
于?
暂Y存?
队ó头?
数簓据Yp=front->next;x=p->data;front->next=p->next;if(p->next==NULL){}deletep;returnx;rear=front;cout<<"队ó列为a空?
"<intmain(){
LinkQueuea;intindex;DataTypetemp;do{cout<<"**********************************"<队ó操ù作痢?
<篇三:
队列存储与操作实验报告
实验四队列存储与操作
一、实验目的
1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。
二、实验内容
1.顺序队列的实现和运算
2.链式队列的实现和运算
3.循环队列的实现和运
三、详细设计:
1、顺序队列的实现:
#include
usingnamespacestd;
constintSize=100;
typedefcharDataType;
classCirQueue
{
public:
CirQueue()
{
front=rear=0;//构造队列,初,front和rear指向
}
~CirQueue(){}
voidEnQueue(DataTypex)
{
if((rear+1)%Size==front)
{
cout<<"队列已经满了"<return;
}
rear=(rear+1)%Size;//队尾指针在循环的意义下加
data[rear]=x;
cout<return;
}
DataTypeGetQueue()//取队头
{
if(isEmpty())
{
cout<<"队列为空"<return0;
}
inti;
i=(front+1)%Size;
returndata[i];
}
DataTypeDeQueue()
{
if(isEmpty())
{
cout<<"队列为空"<return0;
}
front=(front+1)%Size;//队头指针在循环的意义下加
returndata[front];
}
intisEmpty()//是否为空
{
if(front==rear)
{
return1;
}
else{
return0;
}
}
private:
DataTypedata[Size];
intfront,rear;
};
intmain()
{
CirQueuea;
intindex;
DataTypetemp;
do
{
cout<<"**********************************"<cout<<"1、入队操作"<cout<<"2、取队头操作"<cout<<"3、出队操作"<cout<<"4、判断队列是否为空"<cin>>index;
if(index==5){return0;}
switch(index)
{
case1:
cout<<"请输入要入队的元素"<cin>>temp;
a.EnQueue(temp);
break;
case2:
temp=a.GetQueue();
if(temp!
=0)
{
cout<<"队头的元素为"<}
break;
case3:
temp=a.DeQueue();
if(temp!
=0)
{
cout<<"出队的元素为"<}
break;
case4:
booltemp;
temp=a.isEmpty();
if(temp)
{
cout<<"空队"<}else{
cout<<"非空队"<}
break;
}
}while(index);
return0;
}
2、循环队列的实现:
#include
#include
#defineOK1
#defineERROR0
typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintQElemType;
#defineMAXQSIZE100//最大队列长度(对于循环队列,最大队列长度要减1)
typedefstruct
{
QElemType*base;//初始化的动态分配存储空间
intfront;//头指针,若队列不空,指向队列头元素
intrear;//尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
StatusInitQueue(SqQueue&Q)
{
//构造一个空队列Q,该队列预定义大小为MAXQSIZE
Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType));
if(!
Q.base)returnERROR;
Q.front=Q.rear=0;
returnOK;
}
StatusEnQueue(SqQueue&Q,QElemTypee)
{
//插入元素e为Q的新的队尾元素
if((Q.rear+1)%MAXQSIZE==Q.front)returnERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
returnOK;
}
StatusDeQueue(SqQueue&Q,QElemType&e)
{
//若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
if(Q.front==Q.rear)returnERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXQSIZE;
returnOK;
}
StatusGetHead(SqQueueQ,QElemType&e)
{
//若队列不空,则用e返回队头元素,并返回OK,否则返回ERROR
if(Q.front==Q.rear)returnERROR;
e=Q.base[Q.front];
returnOK;
}
intQueueLength(SqQueueQ)
{
//返回Q的元素个数
return(Q.rear+MAXQSIZE-Q.front)%MAXQSIZE;
}
StatusQueueTraverse(SqQueueQ)
{
//若队列不空,则从队头到队尾依次输出各个队列元素,并返回OK;否则返回ERROR.
inti;
i=Q.front;
if(Q.front==Q.rear)printf("空队!
");
else{
printf("队列为is:
");
while(i{
printf("%d",Q.base[i]);
i=i+1;
}
}
printf("\n");
returnOK;
}
intmain()
{
inta;
SqQueueS;
QElemTypex,e;
if(InitQueue(S))//判断顺序表是否创建成功
{