当前位置:文档之家› 数据结构-队列实验报告

数据结构-队列实验报告

《数据结构》课程实验报告
一、实验目的和要求
(1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。

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

二、实验环境
Windows7 ,VC
三、实验内容及实施
实验三:队列
【实验要求】
构建一个循环队列, 实现下列操作
1、初始化队列(清空);
2、入队;
3、出队;
4、求队列长度;
5、判断队列是否为空;
【源程序】
#include<stdio.h>
#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<n;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");
}
四、实验结果(程序的执行结果)
五、实验讨论
掌握出队入队的要点和实现代码。

相关主题