3第3章栈和队列分析.ppt

3第3章栈和队列分析

case @: ClearStack(S); break; // 重置S为空栈 default : Push(S, ch); break; // 有效字符进栈,未考虑栈满情形 } ch = getchar(); // 从终端接收下一个字符 } 将从栈底到栈顶的字符传送至调用过程的数据区; ClearStack(S); // 重置S为空栈 if (ch != EOF) ch = getchar(); } DestroyStack(S); }// LineEdit 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 入口 出口 例4: 迷宫求解 $ $ $ $ $ $ $ $ 求迷宫中从入口到出口的所有路径是一个经典的程序设计问题。由于计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中应用“栈”也就是自然而然的事了。 假设迷宫如上页图所示: 假设“当前位置”指的是“在搜索过程中某一时刻所在图中某个方块位置”,

文档评论(0)

1亿VIP精品文档

相关文档