顺序队链队实验报告Word文档格式.docx
- 文档编号:16722836
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:15
- 大小:230.14KB
顺序队链队实验报告Word文档格式.docx
《顺序队链队实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《顺序队链队实验报告Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
3
实验数据与结果
10
4
总结
5
排版
源程序质量
6
正确性
63
7
友好性
8
可读性
9
健壮性
创新与多样性
合计
评分人签字
实验报告的内容与要求
一、实验题目
顺序队列、链队列的基本操作
二、实验目的
了解顺序队列、链队列的结构特点及有关概念,掌握其基本操作算法。
三、实验内容
实现顺序队列和链队列的初始化、进队、出队、销毁操作
四、实验要点与要求
1.处理的数据类型即ElemType的类型
基本版要求:
整型、字符型
扩展版要求:
字符串型(基础较好的同学)
2.必须采用函数调用
五、算法思想
队列的特点是一端进,另一端出,由此需要定义队首指针和队尾指针,分别用于出队和进队的相关操作
boolInQuene(SqQuene*&
q,ElemTyped)//入队元素
{
if(q->
rear==MaxSize-1)
{
cout<
<
"
队满!
endl;
returnfalse;
}
q->
rear++;
data[q->
rear]=d;
returntrue;
}
判断队列为满的条件为队尾指针指向数组最大处,由于出队的方式所限,顺序队会出现假溢出的情况,为了解决这个问题,可以采用环队或者链队代替。
链队算法如下
boolInNode(SqNode*&
n,ElemType&
e)
QNode*q;
q=(QNode*)malloc(sizeof(QNode));
data=e;
next=NULL;
if(n->
rear==NULL)
n->
front=n->
rear=q;
else
rear->
next=q;
cout<
入队成功!
和所有的链式储存模式一样,在进行新填数据的时候都需要分配空间,修改相应的指针域,链式储存模式没有队列最大值的性质就解决了顺序队列假溢出的问题
六、算法描述及流程图
七、实验数据及实验结果
测试类型
输入数据
期望输出结果
实际输出结果
测试结论
合法数据
1,2,a,b,
1,2,a,b
测试成功,程序正确执行
非法数据
-1
1.5
go
-
1压栈成功
.5丢失
g压栈成功
o丢失
不符合程序预设的数据处理类型,程序执行,但是得不到期望的结果
八、程序组成结构示意图
九、顺序队列调试截图
十、链队列调试截图
十一、顺序队列源代码
//实现顺序队列的入队,出队,遍历操作
//采用字符型储存数据,指针型引用做形参
#include<
iostream>
malloc.h>
#defineMaxSize100
usingnamespacestd;
typedefcharElemType;
typedefstructMyQuene
ElemTypedata[MaxSize];
intfront;
intrear;
intcount;
intno;
}SqQuene;
voidInit(SqQuene*&
q);
//初始化
voidDestory(SqQuene*&
//销毁队列
q,ElemTyped);
//入队
boolOutQuene(SqQuene*&
q,ElemType&
d);
//出队对首元素
voidDispQuene(SqQuene*&
//列取当前队列所有元素
voidSearch(SqQuene*q,ElemTyped);
//搜索元素
q)//初始化队列
q=(SqQuene*)malloc(sizeof(SqQuene));
front=q->
rear=-1;
count=-1;
no=0;
q)//销毁队列
free(q);
d)//出队元素
front==q->
rear)
front++;
d=q->
front];
q,ElemTyped)//遍历队列元素
所有元素:
;
for(inti=q->
front+1;
i<
=q->
rear;
i++)
q->
d=q->
"
d;
count;
voidmain()
SqQuene*q;
ElemTyped;
intn,choose;
Init(q);
for(;
)
<
*********************>
*1.入队元素*>
*2.出队元素*>
*3.遍历队列*>
*4.退出*>
请选择:
cin>
>
choose;
switch(choose)
{
case1:
do{
cout<
输入您需要入队的个数(n<
="
MaxSize<
):
cin>
n;
q->
no=q->
no+n;
}
while(n>
MaxSize||n<
1);
for(inti=0;
{
cout<
元素"
i+1<
:
cin>
InQuene(q,d);
break;
case2:
if(q->
\n队列为空,请入队数据!
break;
else{
输入您需要出队的个数(n<
q->
no<
if(n>
no)
需要弹出元素个数比实际元素多,将弹出队列所有元素!
n=q->
no;
OutQuene(q,d);
q->
count++;
d<
no--;
break;
case3:
else
DispQuene(q,d);
case4:
exit(0);
}
Destory(q);
十二、链队列源代码
//实现链队列的初始化、销毁、元素进队、出队等操作
//采用字符型数据存储模式,指针型引用做形参
typedefstructMyNode
ElemTypedata;
structMyNode*next;
}QNode;
typedefstruct
QNode*front;
QNode*rear;
}SqNode;
voidInit(SqNode*&
n)
n=(SqNode*)malloc(sizeof(SqNode));
n->
rear=NULL;
voidDestory(SqNode*&
free(n);
boolOutNode(SqNode*&
QNode*p;
队列为空\n"
p=n->
front;
front->
next;
e=p->
data;
free(p);
SqNode*n;
ElemTypee;
intchoose;
Init(n);
*3.退出*>
输入需要入队的元素:
e;
InNode(n,e);
if(OutNode(n,e))
当前队首元素为:
e<
else
Destory(n);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 顺序 队链队 实验 报告