3.2 栈的应用举例 例一:数制转换 例二:括号匹配的检验 例三:行编辑程序问题 例四:迷宫求解 例五:表达式求值
3.2 栈的应用举例 例一: 数制转换 例二: 括号匹配的检验 例三: 行编辑程序问题 例四: 迷宫求解 例五: 表达式求值
列一、数制转换 算法基于原理: N=(N div d)xd+N mod d
例一、数制转换 算法基于原理: N = (N div d)×d + N mod d
例如:(1348)10=(2504)8,其运算过程 如下 N N diy 8 N mod 8 1348 168 4 计算顺序 168 21 0 21 2 5 输出顺序 2 0 2
例如:(1348)10 = (2504)8 ,其运算过程 如下: N N div 8 N mod 8 1348 168 4 168 21 0 21 2 5 2 0 2 计 算 顺 序 输 出 顺 序
计算压栈过程 输出弹栈过程 void conversion 10{ while (!StackEmpty(S)){ InitStack(S); Pop(S,e)月 scanf ("%d",N); printf("%od",e ) while (N){ Push(S,N%8); }/∥conversion N=N/8; U
void conversion () { InitStack(S); scanf ("%d",N); while (N) { Push(S, N % 8); N = N/8; } while (!StackEmpty(S)) { Pop(S,e); printf ( "%d", e ); } } // conversion 计算压栈过程 输出弹栈过程
例二:括号四配的检验 假设表达式中充许括号嵌套,则检验括号是否匹配的方 法可用“期待的急迫程度”这个概念来描述。例: (()()(())) 例三:行编辑程序 在编辑程序中,设立一个输入缓冲区,用于接受用户 输入的一行字符,然后逐行存入用户数据区。允许用户 输入错误,并在发现有误时可以及时更正
❖ 例二:括号匹配的检验 假设表达式中充许括号嵌套,则检验括号是否匹配的方 法可用“期待的急迫程度”这个概念来描述。例: (()()(())) ❖ 例三:行编辑程序 在编辑程序中,设立一个输入缓冲区,用于接受用户 输入的一行字符,然后逐行存入用户数据区。允许用户 输入错误,并在发现有误时可以及时更正