二、栈的应用举例
★若读出的运算符的优先级不大于运算符栈栈顶 运算符的优先级,则从操作数栈连续推出两个操 作数,并从运算符栈推出一个运算符,然后作相 应的运算,并将运算结果压入操作数栈。在这种 情况下,当前读出的运算符下次重新考虑(即不 再读下一个符号)。
分析:表达式2+3*4-9/3;的计算过程
二、栈的应用举例
出栈时,在栈非空时,先将栈顶元素赋给指定的变 量,再将栈顶指针退一。
void pop(Stack &S, int &e) {
if(S.top==0) { cout<<"空栈";return; } e=S.data[S.top-1]; --S.top; return; }
2.栈的顺序存储及其实现
(4) 读栈顶元素:将栈顶元素赋给一个指定的变量
2 递归的实现
从递归的基本思想可以看出,计算机 执行递归过程时,需要记忆各步的状 态,以便问题的返回。这可以用栈来 实现。
a[4]={2,3,7,5} max(a,m,n) { if(m!=n)
{x=max(a,m,(m+n)/2); 2 7 y=max(a,(m+n)/2+1,n); 3 5
return x>y?x:y;} x=3 7 y=7
Struct LQueue{ node *front; node *rear;
} LQueue *LQ;
四、队列
链队的说明如下
★队头指针为LQfront,队尾指针为LQrear, 对头元素的引用为LQfrontdata,对尾元素的引用 为LQreardata. ★初始化时,设置LQfront=LQrear=NULL.
Q(1:6)