队列的表示及实现实验报告
班级 信工082 学号 [1**********]2 姓名 李霄 实验组别 实验日期 2010-12-20 室温 报告日期 2010-12-20 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等)
实验名称: 实验三 队列的表示及实现
实验目的:
1、通过实验进一步理解队列的“先进先出”特性。
2、掌握队列的逻辑结构及顺序存储结构和链式存储结构。
3、熟练运用C 语言实现队列的基本操作。
4、灵活运用队列解决实际问题。
实验内容:
1、实现链队列,并编写主函数进行测试。测试方法为:依次10、20、30、40,然后,出对3个元素。再次入队50、60,然后出队3个元素。查看屏幕上显示的结果是否与你分析的结果一致。
2、在1的基础上,再出队1个元素。查看屏幕上显示的结果是否与你分析的结果一致。
3、编写主函数比较取队头元素操作和出队操作。
实验学时:2学时
实验程序
#include "stdio.h"
#include "conio.h"
typedef int DataType;
typedef struct
{
DataType data;
struct QNode* next;
}LQNode,*PQNode;
typedef struct
{
PQNode front,rear;
}LinkQueue;
int InitQueue(LinkQueue *Q)
{
Q->front=Q->rear=(PQNode)malloc(sizeof(LQNode));
if (!Q->front){printf("errors\n");return 0;}
Q->front->next=NULL;
return 1;
}
int QueueEmpty(LinkQueue Q)
{
if(Q.front==Q.rear)
return 1;
else
return 0;
}
int EnQueue(LinkQueue *Q,DataType e)
{
PQNode p;
p=(PQNode)malloc(sizeof(LQNode));
if(!p)
{
printf("\n\nerrors\n\n");
return 0;
}
p->data=e;
p->next=NULL;
Q->rear->next=p;
Q->rear=p;
return 1;
}
int DeQueue(LinkQueue *Q,DataType *e)
{
PQNode p;
if( Q->front==Q->rear)
{
printf("\nerrors\n");
return 0;
}
p=Q->front->next;
*e=p->data;
Q->front->next=p->next;
free(p);
if(Q->rear==p)
Q->rear=Q->front;
return 1;
}
int GetHead(LinkQueue Q,DataType *e)
{
PQNode p;
if(Q.front==Q.rear)
{
printf("\nerror\n");
return 0;
}
p=Q.front->next;
*e=p->data;
printf("%d",*e);
}
main()
{
int i,*e,m;
LinkQueue Q;
int a[6]={10,20,30,40,50,60};
printf("she ji yi shun xu wei:\n");
InitQueue(&Q);
for(i=0;i
EnQueue(&Q,a[i]);
for(i=0;i
{
DeQueue(&Q,&e);
printf("%d\t",e);
}
for(i=4;i
EnQueue(&Q,a[i]);
while(!QueueEmpty(Q))
{
DeQueue(&Q,&e);
printf("%d\t",e);
}
printf("\nhui che yun xing sheji2\n");
getchar();
DeQueue(&Q,&e);
printf("\nhui che yun xing qu dui tou yuan su:\n");
getchar();
for(i=0;i
EnQueue(&Q,a[i]);
GetHead(Q,&e);
printf("\nhui che yun xing chu dui cao zuo:\n");
getchar();
for(i=0;i
EnQueue(&Q,a[i]);
DeQueue(&Q,&e);
printf("%d",e);
}
实验步骤
1、WIN-TC 开发环境安装与配置
1) 首先在网上下载WIN-TC 的版本;
2) 下载完成后进行安装,安装路径默认就可以了,一路next 就ok 了;
3) 打开WIN-TC 会出现如下界面;
2、在WIN-TC 中输程序,源代码见算法流程。
3、在运行中点编译连接。
4、运行后显示编译成功即没有错误,如图:
5、点确定后再在运行中点编译连接并运行,并出现如下窗口:
6、点击确定后出现如下窗口:
7、按回车后显示:
8、按回车显示如图:
9、按回车显示如图:
实验结果:通过实验步骤中的截图可以看出实验结果正确,故本次编译的程
序能够实现实验内容中的要求。
心得体会:通过本次实验使我对队列的表示及实现有所了解,编译的过程是
我更进一步的掌握了队列的定义及其结构,并通过编译的结果区分了栈和队列的区别,深刻的理解了“先进后出”以及“先进先出”的概念。