一需求分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.需求分析:
(1)迷宫:以二维数组mzae[m+2][n+2]表示迷宫,其中:maze[0][j]和maze[m+1][j](0= (2)二叉树:以二叉链表存储表示。输入树的各个结点,并能够输出用不同方法遍历的遍历序列;分别建立建立二叉树存储结构的的输入函数、输出层序遍历序列的函数、输出先序遍历序列的函数。 二.概要设计: 迷宫: typedef struct { int x;//下标 int y;//下标 } DataType; struct SeqStack { //序栈类型定义 int t; //示栈顶位置 DataType s[MAXNUM]; }; typedef struct SeqStack *PSeqStack; //序栈类型的指针类型 /***************建立迷宫****************/ void initmaze(maze[][N]) //建立迷宫 /*******************栈函数**********************/ PSeqStack createEmptyStack_seq() //建立空栈 //若创建成功则返回栈的首地址,否则输出Out of space!! int isEmptyStack_seq( PSeqStack pastack ) //判栈是否空 //若栈空则返回1,否则返回0 void push_seq( PSeqStack pastack, DataType x ) //在栈中压入一元素x,y,d void pushtostack(PSeqStack st, x, y) void pop_seq( PSeqStack pastack ) //删除栈顶元素 DataType top_seq( PSeqStack pastack ) //当pastack所指的栈不为空栈时,返回栈顶元素的值 void printpath(PSeqStack st) //打印路径上的每一点 /*********************求迷宫的路径********************/ void mazePath(maze[][N], direction[4][2], x1, y1, x2, y2) //求迷宫的路径如找到路径则调用printpath()输出路径,否则输出The path has not been found! /***********************主函数********************/ int main(){ 创建迷宫 求迷宫路径 return 0 } (2)二叉树: typedef struct node{ char data; struct node *lchild,*rchild; }BinTNode; //自定义二叉树的结点类型 typedef BinTNode *BinTree; //定义二叉树的指针 //==========基于先序遍历算法创建二叉树============== //=====要求输入先序序列,其中加入虚结点"#"以示空指针的位置========== BinTree CreatBinTree(void) //创建二叉树如果创建成功则返回二叉链表首地址,否则返回空指针 //========NLR 先序遍历============= void Preorder(BinTree T) //基于二叉链表对二叉树进行先序遍历 //=====采用后序遍历求二叉树的深度、结点数的递归算法======== int TreeDepth(BinTree T) //基于二叉链表求树深算法求二叉树节点数目 //====利用"先进先出"(FIFO)队列,按层次遍历二叉树========== void Levelorder(BinTree T) //基于二叉链表对二叉树进行层序遍历 //==========主函数================= void main() { 建立二叉树 do { //从菜单中选择遍历方式,输入序号。 switch (i){ i为1时先序遍历 i为2时层序遍历 i为0时退出整个循环体 } } while(i!=0) } 三.详细设计: 迷宫: #include #include #define MAXNUM 100//栈中最大元素个数 #define N 10 //图的第一维长度 typedef struct { int x;//下标 int y;//下标 } DataType; struct SeqStack { //序栈类型定义 int t; //示栈顶位置 DataType s[MAXNUM]; }; typedef struct SeqStack *PSeqStack; //序栈类型的指针类型 /***************建立迷宫****************/ void initmaze(char maze[][N]) { int i,j; int m,n; //迷宫行,列 printf("请输入迷宫的行数 m=(m的值不能大于8):\n"); scanf("%d",&m); printf("请输入迷宫的列数 n=(m的值不能大于8):\n"); scanf("%d",&n); printf("\n请输入迷宫的各行各列(用空格隔开):\n <注意>:\n 1.输入$代表路.\n 2.输入#代表墙.\n");