例34设n个元素进栈序列是1,2,3,…,n,其 输出序列是p1p2…,pn,若p1=3则p2的值。 (A)一定是2 (B)一定是1 (C)不可能是1)以上都不对 答:当p1=3时说明,23先进栈立即出栈3然 后可能出栈,即为2,也可能4或后面的元素进栈, 再出栈。因此,p2可能是2,也可能是4…,n,但一 定不能是1。所以本题答案为C
例3.4 设n个元素进栈序列是1,2,3,…,n,其 输出序列是p1 ,p2 ,…,pn ,若p1 =3,则p2的值 。 (A) 一定是2 (B) 一定是1 (C) 不可能是1 (D) 以上都不对 答:当p1 =3时,说明1,2,3先进栈,立即出栈3,然 后可能出栈,即为2,也可能4或后面的元素进栈, 再出栈。因此,p2可能是2,也可能是4,…,n,但一 定不能是1。所以本题答案为C
在顺序栈中实现栈的基本运算算法: (1)初始化栈 Einitstack(&s) 建立一个新的空栈s实际上是将栈顶指针 指向-1即可。对应算法如下 void Initstack(Sqstack * &s) s=(SqStack ")malloc(sizeof(sqstack)); s->t0
在顺序栈中实现栈的基本运算算法: (1)初始化栈initStack(&s) 建立一个新的空栈s,实际上是将栈顶指针 指向-1即可。对应算法如下: void InitStack(SqStack *&s) { s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1; }
(2)销毁栈 ClearStack(&s 释放栈s占用的存储空间。对应算法如下: void ClearStack(Sqstack *&s) ree(s
(2)销毁栈ClearStack(&s) 释放栈s占用的存储空间。对应算法如下: void ClearStack(SqStack *&s) { free(s); }
(3)求栈的长度 StackLength(s) 返回栈s中的元素个数,即栈指针加1的结果 对应算法如下 int StackLength(SqStack *s) return(s->top+1);
(3)求栈的长度StackLength(s) 返回栈s中的元素个数,即栈指针加1的结果。 对应算法如下: int StackLength(SqStack *s) { return(s->top+1); }
(4)判断栈是否为空 StackEmpty(s) 栈S为空的条件是s→>tp=1。对应算法 如下: int StackEmpty(sqstack *s) return(s->top==-1);
(4)判断栈是否为空StackEmpty(s) 栈S为空的条件是s->top==-1。对应算法 如下: int StackEmpty(SqStack *s) { return(s->top==-1); }