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)