全球旧事资料 分类
实现顺序栈或循环队列的存储
一、实验目的
(1)、理解栈的特性“后进先出”和队列的特性“先进先出”。(2)、仅仅认识到栈和队列是两种特殊的线性表是远远不够的,本次实验的目的在于更深入的了解栈和队列的特性,以便在实际问题背景下灵活运用他们。(3)、在了解他特性的基础上,还将巩固对这种结构的构造方法的理解。
二、实验环境
(1)Wi
dowsXP系统下(2)编程环境:VC60
三、实验内容
(1)、要求:在国际象棋8×8棋盘上面,按照国际象棋规则中马的行进规则,实现从任意初始位置,每个方格只进入一次,走遍棋盘上全部64个方格。编制程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,并输出它的行走路线(棋盘如图所示)。
(2)、输入:任意一个起始位置;输出:无重复踏遍棋盘的结果,以数字164表示行走路线。
0
1
2
3
4
5
6
7
0
8
1
1
7
2
2
H
3
6
3
4
5
4
5
6
7
(3)、数据结构要求:采用顺序栈或者链栈实现。
第1页共7页
f四、实验步骤
为了实现上述程序功能,可以采用顺序栈或者链栈来存储它的数据,本实验所需要的存储空间不是很大,不需动态的开辟很多空间,所以采用相对简单的顺序栈来存储数据,既方便有简单,而用链栈在实现上相对比顺序栈复杂的一点。
(一)、概要设计
(1)、顺序栈的抽象数据类型定义:ADTStack数据对象:Daiai∈(0,1,…,9),i01,2,…,

≥0数据关系:Rai1aiai1ai∈Di12,…,
ADTStack
(2)本程序包含三个模块:1、主程序模块:
voidmai
定义变量;接受命令;处理命令;退出;
2、起始坐标函数模块马儿在棋盘上的起始位置;3、探寻路径函数模块马儿每个方向进行尝试,直到试完整个棋盘;4、输出路径函数模块输出马儿行走的路径;
各模块之间的调用关系:
主程序模块
输入的初始位置是否正确否
是起始坐标函数模块
探寻路径函数模块
输出路径函数模块块
结束
(二)、详细设计
第2页共7页
f(1)、定义头文件和预定义
i
cludestdioh
defi
eMAXSIZE100
defi
eN8
(2)、数据类型定义
i
tboard88
定义棋盘
i
tHtry1811222112
存储马各个出口位置相对当前位置行下标的增量数组
i
tHtry2822111221
存储马各个出口位置相对当前位置列下标的增量数组
structStack
定义栈类型
i
ti
行坐标
i
tj
列坐标
i
tdirector
存储方向
stackMAXSIZE
定义一个栈数组
i
ttop1
栈指针
(3)、函数声明voidI
itLocatio
i
tr
好听全球资料 返回顶部