数据结构实验3 队列及其应用

2020-05-13 10:31

实验三 队列及其应用

一、 实验教学目的

(1) 掌握队列的特点及其描述方法。 (2) 用链式结构实现一个队列。 (3) 掌握队列的各种基本操作。 (4) 掌握队列的简单应用程序。

二、 实验教学内容 1、 实验题目

(1)链队子系统的设计与实现 ①设计一个字符型的链队列;

②编写队列的进队、出队、读队头元素、显示队列中全部元素程序;

③设计一个选择式菜单,以菜单方式选择队列的各种基本操作。菜单形式如下:

队 列 子 系 统

************************************************* * 1----------进 队 * * 2----------出 队 * * 3----------读 队 头 元 素 * * 4----------显 示 * * 0----------退 出 * ************************************************* 请选择菜单号:

(2)利用队列的性质与基本运算编程解决迷宫问题 2、实验要求:

(1)选择合适的存储结构(循环队列)表示队列,解决队空、队满判断条件相同的矛盾。

(2)实现基于循环队列的存储结构的基本操作,初始化、队空/满判断,入队、出队、取队头元素,求队列长度等。

(3)对所写出的算法进行时间复杂度分析。

3、实验预备知识

(1)队列的定义及队列的“先进先出”的特点。

(2)队列的顺序与链式存储结构及队列的初始化、入队、出队、取队头元素等基本操作。

4、实验环境

(1)一台运行 Windows 2000/XP 操作系统的计算机 (2)选用 turbo c或visual c++

5、实验说明

(1)类型定义 ①顺序队列

#define MAXSIZE 100 /*队列的最大长度*/ typedef struct

{ElemType elem[MAXSIZE];

int front,rear; int len;

}SqQueue; /*顺序队列的类型定义*/ ②链队列

typedef struct node{

ElemType data; struct node *next;

}QNode; /*链队结点类型的定义*/ typedef struct

{QNode *front, *rear;

}LinkQueue; /*链队类型的定义*/ (2)注意问题

①重点理解队列的算法思想,能够根据实际情况选择合适的存储结构

②队列的算法是后续实验的基础(广义表、树、图、查找、排序等)

三、实验内容和实验步骤:(由学生填写)

四、实验用测试数据和相关结果分析:(由学生填写) 五、实验总结:(由学生填写) 六、参考程序模板

第1题:链队子系统的设计与实现 #include #include #include \链队列.h\

/*初始化并建立链队列*/ void Creat(LinkQueue *q) {

//请自行完成 }

main()

{ LinkQueue *p;

p=(LinkQueue *)malloc(sizeof(LinkQueue)); int x,cord;

printf(\第一次操作请选择初始化并建立链队列!*****\\n \ do

{ printf(\ 链队列的基本操作\\n \

printf(\ printf(\ 主菜单 \\n\

printf(\ printf(\ 1 初始化并建立链队列 \\n\ printf(\ 2 入链队列 \\n\ printf(\ 3 出链队列 \\n\ printf(\ 4 遍历链队列 \\n\ printf(\ 5 结束程序运行 \\n\

printf(\ scanf(\ switch(cord) { case 1:

{

Creat(p); Display(p);

}break; case 2:

{ printf(\请输入队列元素的值:x=\ scanf(\ EnQueue(p,x); Display(p); }break; case 3:

{ DeQueue(p, &x); printf(\出链队列元素:x=%d\\n\ Display(p); }break; case 4:

{Display(p);}break;

case 5:

{exit (0);} }

}while (cord<=5); }

/*迷宫求解(用两种方法实现:一种用栈实现,另一种用队列实现)。该算法用队列实现。*/ #include \#include \

#define M 6 #define N 8

#define MAXSIZE M*N

typedef struct{ int x,y; int pre;

}ElemType; /*队列中元素类型定义*/

typedef struct{ int x,y; }item;

#include \顺序队列.h\

void printpath(SqQueue q) /*输出迷宫路径*/ {int i;

i=q.rear-1; do{

printf(\ i=(q.elem[i]).pre; /*回溯*/ }while(i!=-1); printf(\}

int mazepath(int maze[M+2][N+2],item move[8])

/*采用队列的迷宫算法。Maze[M+2][N+2]表示迷宫数组,move[8]表示坐标增量数组*/ {

//请自行完成 }

void main() {int

maze[M+2][N+2]={{1,1,1,1,1,1,1,1,1,1},{1,0,1,1,1,0,1,1,1,1},{1,1,0,1,0,1,1,1,1,1}, {1,0,1,0,0,0,0,0,1,1},{1,0,1,1,1,0,1,1,1,1},{1,1,0,0,1,1,0,0,0,1},{1,0,1,1,0,0,1,1,0,1}, {1,1,1,1,1,1,1,1,1,1}};

item move[8]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0},{-1,1}}; printf(\ system(\}


数据结构实验3 队列及其应用.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:徐州市重点现代服务业发展专项引导资金管理暂行办法

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: