3.1 栈的应用
3.1.1 表达式求值
后缀表达式
栈求解方法
1)若当前字符是操作数,直接发送给后缀表达式
2)若当前字符是运算符:
若当前运算符的优先级高于栈顶运算符,则进栈
否则,退出栈顶运算符发送给后缀表达式
3.1.2 迷宫问题
深度优先遍历
设定当前位置的初值为入口位置
do{
若当前位置可通:
则{将当前位置插入栈顶;
若该位置为出口位置,则算法结束
否则切换当前位置的下邻方块为新的当前位置
}
否则,当前位置不通
则{若栈不空
{若栈顶位置尚有其他方向未探索:
设定新的当前位置为栈顶的下一相邻快,继续试探
若栈顶的四周均不通
{
删去栈顶位置;
若栈不空,重新测试新的栈顶位置
直至找到一个可通的相邻块或出栈至栈空
}
}
若栈空:表明没有出口
}
}
3.2 队列的应用
3.2.1 迷宫问题
广度优先搜索
队列数据类型
typedef struct
{int x,y;
}PoseType;
typedef struct
{int pre;
PoseType seat;
}QElemType;
本文深入探讨了栈与队列在解决迷宫问题中的应用,包括后缀表达式的求值、深度优先遍历求解迷宫及广度优先搜索策略。详细解释了如何使用栈进行后缀表达式的解析,以及通过栈实现的深度优先遍历算法解决迷宫问题,同时介绍了队列如何在广度优先搜索中用于寻找出口路径。


被折叠的 条评论
为什么被折叠?



