Popl&s, &e) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素, 并用e返回其值。 1a2 ●●●●●●
Pop(&S, &e) 初始条件:栈 S 已存在且非空。 操作结果:删除 S 的栈顶元素, 并用 e 返回其值。 a1 a2 an a … … n-1
3.2栈的应用举例 例一、数制转换 例二、括号匹配的检验 例三、行编辑程序问题 例四、迷宫求解 例五、表达式求值 例六、实现递归
3.2 栈的应用举例 例一、 数制转换 例二、 括号匹配的检验 例三、 行编辑程序问题 例四、 迷宫求解 例五、 表达式求值 例六、 实现递归
例一、数制转换 算法基于原理: n=(ndiv d)xd+N mod d
例一、 数制转换 算法基于原理: N = (N div d)×d + N mod d
例如:(1348)0=(2504),其 运算过程如下: n diy 8 nmod 8 计1348168 16821 顺 405 序 21 2 输出顺序 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 o i Initstack(s) scanf(%od, N); while(ni Push(s,n%08); N=N8; while( stackEmpty(s)& Pop(S, e) printf(%od",e) 3/conversion
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