您的当前位置:首页正文

队列实验报告

2020-05-14 来源:爱站旅游
导读队列实验报告
陕西科技大学实验报告

班级 电信091 学号 200906020127 姓名 张成 实验组别 实验日期 2012/3/29 室温 15 报告日期 2012/3/28 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等)

实验名称:《队列设计与应用》(实验报告) 一、实验目的:

1、掌握队列的原理;

2、熟悉队列的设计与应用。

二、实验内容:

 设计自己的顺序队列(只处理整数,非通用),实现队列的基本功能:入队、出队; 对上述功能进行测试(编写测试程序,验证你所设计的队列的正确性)。

三、实验方法:

顺序队列的描述:

#define QUEUESIZE 100

typedef int DataType; typedef struct{

DataType items[QUEUESIZE]; int front,rear; }SqQueue;;

顺序队列的基本操作: 出队: int DeQueue(SqQueue *Q,DataType *e)

{ if(Q->front == Q->rear) { printf(\"队列已空\\n\"); return 0; } *e=Q->items[Q->front];// Q->front=(Q->front+1)%QUEUESIZE; return 1; }

入队

第 1 页

附 页

int EnQueue(SqQueue *Q,DataType e) {

if((Q->rear+1)%QUEUESIZE == Q->front) { printf(\"队列已满\\n\"); return 0; }

Q->items[Q->rear]=e;//

Q->rear=(Q->rear+1)%QUEUESIZE; return 1; }

四、实验源码

//=====Header Files :Queue.h

//=====================定义=========================================

#define QUEUESIZE 100 typedef int DataType; typedef struct{ DataType items[QUEUESIZE]; int front,rear; }SqQueue;

int EnQueue(SqQueue *Q,DataType e); int DeQueue(SqQueue *Q,DataType *e); int TraverseQueue(SqQueue Q) ; int QueueEmpty(SqQueue Q); int InitQueue(SqQueue *Q);

//=====Source Files LinkListmain.c 与LinkListwork.c

//==============Listmain.c ============================================ //文件名称: LinkListmain.c //功能说明:实现出入队列 //资源说明:

//创建日期: 2012-04-05 //软件版本: v 1.0

//==================================================================

第 2 页

附 页

#include \"malloc.h\" #include #include \" Queue.h \"

//================================================================== //函数名: main() //输入参数: //输出参数: //设计者: //创建日期:

//==================================================================

void main() {

//int nu,stp;

//scanf(\"%d\ ///scanf(\"%d\ int e;

int tim[6][2]; SqQueue q; InitQueue(&q); EnQueue(&q,10);

TraverseQueue(q); DeQueue(&q,&e); TraverseQueue(q); DeQueue(&q,&e); TraverseQueue(q); }

//================================================================== ============================================ //文件名称: Stackwork.c

//功能说明:入队列,出队列,初始化等的具体实现 //资源说明:

//创建日期: 2012-04-5 //软件版本: v 1.0

//========================================================

int DeQueue(SqQueue *Q,DataType *e) {

if(Q->front == Q->rear)

第 3 页

附 页

{

printf(\"队列已空\\n\"); return 0; }

*e=Q->items[Q->front];//

Q->front=(Q->front+1)%QUEUESIZE; return 1; }

int EnQueue(SqQueue *Q,DataType e) {

if((Q->rear+1)%QUEUESIZE == Q->front) {

printf(\"队列已满\\n\"); return 0; }

Q->items[Q->rear]=e;//

Q->rear=(Q->rear+1)%QUEUESIZE; return 1; }

int InitQueue(SqQueue *Q) {

Q->front=0; Q->rear=0; return 1; }

int QueueEmpty(SqQueue Q) {

if(Q.rear==Q.front) return 1; else

return 0; }

int TraverseQueue(SqQueue Q) { int pos; pos=Q.front;

while((pos+1)%QUEUESIZE<=Q.rear) {

第 4 页

附 页

printf(\"% d\\ pos++; }

printf(\"\\n\"); return 1; }

五、实验结果:

灵活应用算法InitQueue,实现队列的初始化; 应用算法EnQueue,实现堆栈的入队; 应用算法DeQueue,实现堆栈的出队;

应用算法TraverseQueue,实现队列的遍历。

六、实验心得

a) 堆栈的的空间创建靠包\"malloc.h\"开辟空间; b) 堆栈应用于物理地址连续的数据存储情况;

c) 程序运用一个头文件,声明了顺序表的各个操作,然后在C文件中给于删除,插入,初始化等

具体操作的实现.操作者在主函数中将头文件包含,即实现主函数里对相关功能块的使用。实现模块化思想的应用。

第 5 页

附 页

第 6 页

因篇幅问题不能全部显示,请点此查看更多更全内容