最新队列操作实验报告范文word版 12页Word格式.docx

上传人:b****6 文档编号:20062111 上传时间:2023-01-16 格式:DOCX 页数:10 大小:17.09KB
下载 相关 举报
最新队列操作实验报告范文word版 12页Word格式.docx_第1页
第1页 / 共10页
最新队列操作实验报告范文word版 12页Word格式.docx_第2页
第2页 / 共10页
最新队列操作实验报告范文word版 12页Word格式.docx_第3页
第3页 / 共10页
最新队列操作实验报告范文word版 12页Word格式.docx_第4页
第4页 / 共10页
最新队列操作实验报告范文word版 12页Word格式.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

最新队列操作实验报告范文word版 12页Word格式.docx

《最新队列操作实验报告范文word版 12页Word格式.docx》由会员分享,可在线阅读,更多相关《最新队列操作实验报告范文word版 12页Word格式.docx(10页珍藏版)》请在冰豆网上搜索。

最新队列操作实验报告范文word版 12页Word格式.docx

实验四队列存储与操作

一.实验目的

1、掌握队列顺序存储结构(循环队列)及实现及操作

2、掌握队列的链接存储结构及实现及操作

二.实验内容

1、建立一个空顺序存储结构队列;

对已建立的队列进行插入、删除、取队头元素等基本操作。

2、建立一个空链式存储结构队列;

三、详细设计:

1、顺序队列的实现:

#include<

iostream>

usingnamespacestd;

constintSize=100;

typedefcharDataType;

classCirQueue

{

public:

CirQueue(){}~CirQueue(){}voidEnQueue(DataTypex){if((rear+1)%Size==front){}cout<

<

"

队列已经满了"

endl;

return;

front=rear=0;

//构造队列,初始化一个空的循环队列,front和rear指向

};

}data[rear]=x;

cout<

x<

已入队"

DataTypeGetQueue()//取队头{}DataTypeDeQueue(){}intisEmpty()//是否为空{}DataTypedata[Size];

intfront,rear;

if(front==rear){}else{}return0;

return1;

if(isEmpty()){}front=(front+1)%Size;

//队头指针在循环的意义下加returndata[front];

队列为空"

return0;

if(isEmpty()){}inti;

i=(front+1)%Size;

returndata[i];

private:

intmain()

intindex;

DataTypetemp;

do{cout<

**********************************"

1、入队操作"

2、取队头操作"

3、出队操作"

4、判断队列是否为空"

5、退出"

cin>

>

index;

if(index==5){return0;

}switch(index){case1:

cout<

请输入要入队的元素"

temp;

a.EnQueue(temp);

break;

temp=a.GetQueue();

if(temp!

=0){}cout<

队头的元素为"

temp<

"

case2:

temp=a.DeQueue();

出队的元素为"

case3:

booltemp;

temp=a.isEmpty();

if(temp){cout<

空队"

非空队"

}else{case4:

}}break;

}while(index);

2、链队列的实现:

#include<

usingnamespacestd;

typedefcharDataType;

structNode

classLinkQueue{

LinkQueue(){}~LinkQueue(){}voidEnQueue(DataTypex){}DataTypeGetQueue()//取?

队ó

头?

{if(isEmpty()){}cout<

列为a空?

autos=newNode;

s->

data=x;

next=NULL;

//申Θ?

请?

一?

个?

数簓据Y域?

为aX的?

结á

点?

srear->

next=s;

rear=s;

autohead=newNode;

head->

front=rear=head;

DataTypedata;

Node*next;

}returnfront->

next->

data;

DataTypeDeQueue(){}intisEmpty()//是?

否?

为a空?

{}Node*front,*rear;

//队ó

和í

尾2指?

针?

if(isEmpty()){}autop=newNode;

//用?

于?

暂Y存?

元a素?

DataTypex;

数簓据Yp=front->

next;

x=p->

front->

next=p->

if(p->

next==NULL){}deletep;

returnx;

rear=front;

intmain(){

LinkQueuea;

intindex;

1、¢入?

操ù

作痢?

篇三:

队列存储与操作实验报告

一、实验目的

1、掌握队列的特点(先进先出FIFO)及基本操作,如入队、出队等,队列顺序存储结构、链式存储结构和循环队列的实现,以便在实际问题背景下灵活运用。

二、实验内容

1.顺序队列的实现和运算

2.链式队列的实现和运算

3.循环队列的实现和运

CirQueue()

front=rear=0;

//构造队列,初,front和rear指向

}

~CirQueue(){}

voidEnQueue(DataTypex)

if((rear+1)%Size==front)

return;

rear=(rear+1)%Size;

//队尾指针在循环的意义下加

data[rear]=x;

DataTypeGetQueue()//取队头

if(isEmpty())

return0;

inti;

i=(front+1)%Size;

returndata[i];

DataTypeDeQueue()

front=(front+1)%Size;

//队头指针在循环的意义下加

returndata[front];

intisEmpty()//是否为空

if(front==rear)

return1;

else{

private:

DataTypedata[Size];

intfront,rear;

CirQueuea;

DataTypetemp;

do

cin>

if(index==5){return0;

switch(index)

case1:

a.EnQueue(temp);

break;

temp=a.GetQueue();

if(temp!

=0)

case3:

temp=a.DeQueue();

case4:

booltemp;

temp=a.isEmpty();

if(temp)

}else{

}while(index);

2、循环队列的实现:

malloc.h>

stdio.h>

#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;

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;

StatusGetHead(SqQueueQ,QElemType&

//若队列不空,则用e返回队头元素,并返回OK,否则返回ERROR

intQueueLength(SqQueueQ)

//返回Q的元素个数

return(Q.rear+MAXQSIZE-Q.front)%MAXQSIZE;

StatusQueueTraverse(SqQueueQ)

//若队列不空,则从队头到队尾依次输出各个队列元素,并返回OK;

否则返回ERROR.

i=Q.front;

if(Q.front==Q.rear)printf("

空队!

);

printf("

队列为is:

while(i<

Q.rear)

%d"

Q.base[i]);

i=i+1;

\n"

inta;

SqQueueS;

QElemTypex,e;

if(InitQueue(S))//判断顺序表是否创建成功

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1