数据结构实验4 队列的基本操作

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级
计算1103班
学号
20110921007
姓名
陈冬
成绩
上机实验题目:实验4队列的基本操作
上机实验要求:
1.理解掌握队列的结构特征和操作特点。
2.掌握队列的顺序储存结构化人链式储存结构,以及如何用C语言描述它们的类型定义。
3.掌握两种储存结构下,队列的入队,.出队基本操作的算法;通过实现队列的插入和删除算法加深理解链队列和循环队列的意义。
ret1= destroy(q);
if(ret1==1)
printf("we have deleted the queue.\n");
}
运行结果(本页写不下,可加附页)
本次上机调试情况(小结)(本页写不下,可加附页)
在调试过程中总结了一些经验,比如:
(1)要分清普通变量和指针变量,例如*q,一般用于由子函数向主函数双向传递数据,这样就可将会printf函数写在主函数里了;
上机实验过程(源代码)(本页写不下,可加附页)
#include"stdio.h"
#include"malloc.h"
#define NUll 0
#define OVERFLOW -2
#define OK 1
#define ERROR -1
typedef int status;
typedef int qelemtype;
status dequeue_l(linkqueue *q,qelemtype *e2)
{
struct qnode *p;
if(q->front==q->rear) return ERROR;
p=q->front->next;
*Leabharlann Baidu2=p->data;
q->front->next=p->next;
if(q->rear==p) q->rear=q->front;
status ret1;
qelemtype e;
qelemtype *e2;
int i;
q=&q1;
e2=&e;
ret1=initqueue_l(q);
printf("ret1=%d\n",ret1);
printf("%d\n",q->front->next);
for(i=0;i<5;i++)
{
printf("please inter the number:\n");
scanf("%d",&e);
printf("the number inters the line is:%d\n",e);
enqueue_l(q, e);
}
dequeue_l(q, e2);
printf("the number we delete is:%d\n", *e2 );
destroy(q);
free(p);
return OK;
}
status destroy(linkqueue *q)
{
while(q->front){
q->rear=q->front->next;
free(q->front);
q->front=q->rear;
return OK;
}
}
void main()
{
linkqueue q1,*q;
(2)没有对算法中用到的qnode和linkqueue进行类型定义;
(3)没有返回头指针l;
(4)语句末尾漏掉分号或半圆括号等常见的错误;
经过不断调试,使得程序能够正确运行,并能得到正确结果。
{
struct qnode *p;
p=(queueptr)malloc(sizeof(qnode));
if (!p) return(OVERFLOW);
p->data=e;p->next=NULL;
q->rear->next=p;
q->rear=p;
return OK;
}
/*leave from the line */
typedef struct qnode
{
qelemtype data;
struct qnode *next;
}qnode,*queueptr;
typedef struct
{
queueptr front;
queueptr rear;
}linkqueue;
/*start the line*/
status initqueue_l(linkqueue*q)
{
q->front=q->rear=(queueptr)malloc(sizeof(qnode));
if(!q->front) return(OVERFLOW);
q->front->next=NULL;
return OK;
}
/*inter the line*/
status enqueue_l(linkqueue *q,qelemtype e)
相关文档
最新文档