1、、、、数据结构及其抽象数据类型的定义
数据结构及其抽象数据类型的定义
数据结构及其抽象数据类型的定义
数据结构及其抽象数据类型的定义。。。。
(1)栈的抽象数据类型
ADT Stack
{ 数据对象:D={ai| ai∈CharSet,i=1,2…n,n>=0}
数据关系:R1={<ai-1, ai >| ai-1, ai∈D,i=2,…n}
基本操作: InitStack(&S) 操作结果:构造一个空栈S。
DestroyStack(&S) 初始条件:栈S已存在。
操作结果:销毁栈S。 ClearStack(&S)
初始条件:栈S已存在。
操作结果:将S清为空栈。
StackLength(S) 初始条件:栈S已存在。
操作结果:返回栈S的长度。
StackEmpty(S) 初始条件:栈S已存在。
操作结果:若S为空栈,则返回TRUE,否则返回FALSE。
GetTop(S,&e) 初始条件:栈S已存在。
操作结果:若栈S不空,则以e返回栈顶元素。
Push(&S, e) 初始条件:栈S已存在。
操作结果:在栈S的栈顶插入新的栈顶元素e。
Pop(&S,&e) 初始条件:栈S已存在。
操作结果:删除S的栈顶元素,并以e返回其值。
StackTraverse(S,visit())
初始条件:栈S已存在。
操作结果:从栈底到栈顶依次对S中的每个元素调用函数visit()。 }
ADT Stack
(2)迷宫的抽象数据类型
ADT maze
{ 数据对象:D={ai,j| ai,j∈{ ' ','0','1'},0<=i<=m+1,0<=j<=n+1,m,n<=10}
数据关系:R={ROW,COL}
基本操作:Initmaze(int maze[M][N])
初始条件:二维数组a[row+2][col+2]已存在,
其中自第1行至第row+1行,
每行中自第1列至第col+1列的元素已有值,
并且以值0表示通路,以值1表示障碍。
操作结果:构成迷宫数组,并在迷宫四周加上一圈障碍。
MazePath(struct mark start,struct mark end,int maze[M][N],
int diradd[4][2]) 初始条件:迷宫maze已被赋值。
操作结果:输出迷宫的矩阵形式,
其值为0或1,如果迷宫有从入口到出口的路径,
则输出三元组即坐标和方向,假若没有同路,则系统给出提示。 }
ADT maze 2、、、、整体框架整体框架整体框架整体框架
本程序包含三个模块
(1)栈模块――实现栈抽象数据类型,以链式存储结构为基础设计的,
因为本设计常做查找路径,所以采用了栈的链式存储结构,
其中包括栈的初始化,建栈,入栈,出栈,判栈是否为空等操作。
本模块主要实现实现探索有无通路时的先进后出的操作。
(2)迷宫模块――实现迷宫抽象数据类型即输入行和列,数值,
最后建立迷宫,并且在屏幕上输处迷宫的形式。
(3)主程序模块: void main(){ 初始化; 建立迷宫 输入入口的横坐标,纵坐标[逗号隔开];
输入出口的横坐标,纵坐标[逗号隔开]
struct mark //定义迷宫内点的坐标类型
{ int x; int y; };
struct Element //"恋"栈元素,嘿嘿。。
{ int x,y; //x行,y列 int d; //d下一步的方向 };
typedef struct LStack //链栈
{ Element elem; struct LStack *next;
}
*PLStack;