实验五队列的实现和应用.doc
文本预览下载声明
程序源码:
#includestdio.h
#includestdlib.h
#define MAXSIZE 25
int a[MAXSIZE];
typedef struct Queue
{
int *data;
int front;
int rear;
}Queue;
void Init_Queue(Queue *q) //初始化
{
q-data=(int *)malloc((MAXSIZE)*sizeof(int)) ;
q-front=q-rear=0;
}
void getIn(Queue * q,int elem) //入队
{
if((q-rear+1)%MAXSIZE==q-front)
{
printf(队列已满!\n);
exit(0);
}
q-data[q-rear]=elem;
q-rear=(q-rear+1)%MAXSIZE;
printf(入队元素:%d\n,elem);
//测试入队
}
int getOut(Queue *q) //出队
{
int elem;
if(q-rear==q-front)
{
printf(队列为空!\n);
exit(0);
}
elem=q-data[q-front];
q-front=(q-front+1)%MAXSIZE;
printf(\n出队元素:%d\n,elem);
//测试出队
return elem;
}
void Visit(Queue *q) //-遍历-
{
int visit=q-front;
printf(遍历:);
while(visit!=q-rear)
{
printf(%d ,q-data[visit]);
visit=(visit+1)%MAXSIZE;
}
}
int getHead(Queue *q) //获取头元素
{
return q-data[q-front];
}
int getLength(Queue *q) //获取长度
{
int length;
length=(q-rear-q-front+MAXSIZE)%MAXSIZE;
return length;
}
void main()
{
Queue q,*p;
int i;
p=q;
Init_Queue(p); //初始化
printf(请输入要录入队列的元素,以-1表示结束:\n);
for(i=0;iMAXSIZE;i++)
{
scanf(%d,a[i]);
if(a[i]==-1) break;
else
getIn(p,a[i]);
}
Visit(p); //遍历
printf(\n队列长度为:%d\n,getLength(p)); //求队列长度
printf(头元素:%d\n,getHead(p));
while(getLength(p)!=0)
{
getOut(p); //出队
Visit(p); //遍历
}
printf(队列为空!\n);
}
程序运行截图:
1、小规模测试:
2、大规模数据测试:
显示全部