数据结构-队列实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); } 四、实验结果(程序的执行结果) 五、实验讨论 掌握出队入队的要点和实现代码。