数据结构实验5 (1)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》实验报告

实验序号:5 实验项目名称:队列的操作学号姓名专业、班

实验地点指导教师实验时间

一、实验目的及要求

1. 熟悉队列的基本概念;

2. 掌握队列的链式表存储结构;

3.掌握队列的应用。

二、实验设备(环境)及要求

微型计算机;

windows 操作系统;

Microsoft Visual Studio 6.0集成开发环境。

三、实验内容与步骤

1.C++的库函数中已经实现了队列,引用方法为#include ,请上网查阅资料,完成习题。

①创建一个队列。

②将a、b、c、d、e、f依次入队。

③若队列不为空,将元素出队并打印输出。

2.以下的链式队列采用队头指针和队尾指针分别跟踪队列的头尾两端,请删除队尾指针,只使用队头指针实现队列的初始化、入队、出队和销毁队列。

#include

#include

#define ERROR 1

#define OK 0

#define OVERFLOW 1

typedef int QElemType;

typedef int Status;

//用 e 返回其值,并返回OK;否则返回ERROR

QueuePtr p;

if (Q.front == Q.rear)

return ERROR;

p = Q.front->next;

e = p->data;

Q.front->next = p->next;

if (Q.rear == p)

Q.rear = Q.front;

free (p);

return OK;

}

int main()

{

int i,n=10;

QElemType e;

LinkQueue Q;

InitQueue(Q); //初始化队列

printf("元素入队");

for(i=0;i

{

printf(" %d ",i);

EnQueue(Q,i); //元素入队

}

printf("\n元素出队");

for(i=0;i

{

DeQueue(Q,e); //元素出队

printf(" %d ",e);

}

DestroyQueue(Q);

return 0;

}

3.以下的循环队列采用空一个空间的方式来识别队列满与空,请修改程序,引入一个变量追踪循环队列被使用的空间数,从而达到100%队列空间可用。

#include

#include

#define ERROR 1

#define OK 0

printf("元素入队列");

for(i=0 ; i<10; i++)

{

printf(" %d ",j);

EnQueue(S,j); //元素入队列

j++;

}

printf("\n元素出队列");

for(i=0 ; i<10; i++)

{

DeQueue(S,j); //元素出队列

printf(" %d ",j);

}

}

以下题目为选做题:

4.参考P61-62的代码用链式表实现队列,并在主函数中测试。

四、实验结果与数据处理

详细记录程序在调试过程中出现的问题及解决方法。记录程序执行的结果(贴图)。

五、分析与讨论

对上机实践结果进行分析,上机的心得体会。

六、教师评语

签名:

日期:

成绩

附源程序清单:1

1

#include

#include

#include

using namespace std;

int main(){

queue q;

int i;

char f[5],m;

for(i=0;i<5;i++)

{

scanf("%c",&f[i]);

q.push(f[i]);

}

for(i=0;i<5;i++)

{

printf("%c ",q.front());

q.pop();

}

return 0;

}

2

#include

#include

#define ERROR 1

#define OK 0

#define OVERFLOW 1

typedef int QElemType;

typedef int Status;

typedef struct QNode {// 结点类型

QElemType data;

struct QNode *next;

}QNode,*QueuePtr;

typedef struct { // 链队列类型

QueuePtr front; // 队头指针

}LinkQueue;

Status InitQueue (LinkQueue &Q) {

// 构造一个空队列Q

Q.front=(QueuePtr)malloc(sizeof(QNode));

if (!Q.front)

相关文档
最新文档