数据结构-队列实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》课程实验报告

一、实验目的和要求

(1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。

(2)掌握队列的顺序表示和实现。

二、实验环境

Windows7 ,VC

三、实验内容及实施

实验三:队列

【实验要求】

构建一个循环队列, 实现下列操作

1、初始化队列(清空);

2、入队;

3、出队;

4、求队列长度;

5、判断队列是否为空;

【源程序】

#include

#define MAXSIZE 100

#define OK 1;

#define ERROR 0;

typedef struct

{

int *base;

int front;

int rear;

}SqQueue;//队列的存储结构

int InitQueue(SqQueue &Q)

{

Q.base=new int[MAXSIZE];

Q.front=Q.rear=0;

return OK;

}//队列的初始化

int EnQueue(SqQueue &Q,int e)

{

if((Q.rear+1)%MAXSIZE==Q.front)

return ERROR;

Q.base[Q.rear]=e;

Q.rear=(Q.rear+1)%MAXSIZE;

return OK;

}//队列的入队

int DeQueue(SqQueue &Q,int &e)

{

if(Q.front==Q.rear) return ERROR;

e=Q.base[Q.front];

Q.front=(Q.front+1)%MAXSIZE;

return OK;

}//队列的出队

int QueueLength(SqQueue &Q)

{

int i;

i=(Q.rear-Q.front+MAXSIZE)%MAXSIZE; return i;

}//求队列长度

void JuQueue(SqQueue &Q)

{

if(Q.rear==Q.front)

printf("队列为空");

else

printf("队列不为空");

}//判断队列是否为空

void QueueTraverse(SqQueue &Q)

{

int i,k;

k=QueueLength(Q);

for(i=1;i<=k;i++)

{

printf("%d ",Q.base[Q.front]);

Q.front=(Q.front+1)%MAXSIZE;

}

}//输出队列元素

void main()

{

int e,i,n;

SqQueue Q;

InitQueue(Q);

printf("循环队列的长度为:");

scanf("%d",&n);

printf("请输入入队元素:\n");

for(i=0;i

{

scanf("%d",&e);

EnQueue(Q,e);

}

printf("队列长度为:%d\n",QueueLength(Q)); JuQueue(Q);

printf("\n");

printf("执行出队操作\n");

DeQueue(Q,e);

printf("出队元素是%d\n",e); QueueTraverse(Q);

printf("\n");

}

四、实验结果(程序的执行结果)

五、实验讨论

掌握出队入队的要点和实现代码。

相关文档
最新文档