数据结构之第三章 栈

1.栈

最近忙着准备期末的考试,要知道大学生挂科是一件很可怕的事情。先将一点栈的知识记录下来,一学期过了课本啥的也就丢了。

1.1定义

栈是一种只能在一端进行删除插入或删除操作的线性表。

1.2顺序栈

栈中的数据元素的逻辑关系呈线性关系,所以栈可以和线性表一样采用顺序存储结构进行存储。采用顺序存储结构的栈称为顺序栈。
顺序栈的四个要素:(初始设计s->top=-1)
1,栈空的条件:s->top=-1。
2.栈满的条件:s-> top==MaxSize-1(data数组的最大下标)。
3.元素e的进栈操作:先将栈顶指针top增1,然后将元素e放在栈顶指针处。
4.出栈操作:先将栈顶指针top处的元素取出放在e中,然后将栈顶指针减1。

共享栈

共享栈四个要素:
1.栈空条件:栈1空为top==-1:栈2空的条件为top2=MaxSize。
2.栈满条件:topl==top2-1。
3.元素x进栈操作:进栈1操作为top1++;data[top1]=x;进栈2操作为top2–;
data[top2]=x。
4.出栈x操作:出栈1操作为x=data[top1];top1–;出栈2操作为x=data[to
top2++。

出栈特点:后进先出

一个栈的入栈序列是a,b,c,d,e则栈的不可能的输出序列是:()
A edcba B decba C dceab D abcde

答案:C
解析:后进先出,明确这个问题的矛盾根本所在:第一次出栈d,说明什么?说明a,b,c一定早已入栈(入栈顺序决定的)。那么在出栈d以后,a,b,c的出栈顺序一定是c,b,a,而不用理会中间穿插着出栈了d后面的字符(因为可以再入栈,再出栈嘛)。所以立即选中C,不用犹豫,理由简单:d出栈了,abc一定已经入栈,那么abc只能以cba的顺序出栈,C不符合。

一个栈的输入序列为:1,2,3,4,则栈的不可能输出的序列是( D )。
A. 1243 B. 2134 C. 1432 D. 4312 E. 3214

第一次出栈4,说明1, 2,3,已经入栈了,在4出栈以后,1, 2,3,三个数字一定是先按照顺序入栈了的,4出来后出来的顺序只能是3, 2, 1。故D选项错误
n个不同的元素通过一个栈产生的出栈序列个数为C(2n,n)/(n+1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值