判斷題
1.通過對堆棧S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。輸出的序列為:123。
2.若一個棧的輸入序列為{1, 2, 3, 4, 5},則不可能得到{3, 4, 1, 2, 5}這樣的出棧序列。
3.順序棧中元素值的大小是有序的。
4.棧頂元素和棧底元素有可能是冋一個元素。
5.棧底元素是不能刪除的元素。
6.對順序棧進行進棧、出棧操作不涉及元素的前、后移動問題。
7.若用data[1..m]表示順序棧的存儲空間,則對棧的進棧、出棧操作最多只能進行m次。
選擇題
1.設一個棧的輸入序列是1、2、3、4、5,則下列序列中,是棧的合法輸出序列的是?
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5
2.若一個棧的入棧序列為1、2、3、…、N,輸出序列的第一個元素是i,則第j個輸出元素是:
B.i−j
C.j−i−1
D. 不確定
3.設一個堆棧的入棧順序是1、2、3、4、5。若第一個出棧的元素是4,則最后一個出棧的元素必定是:
B.3
C.5
D. 1或者5
4.表達式a*(b+c)-d
的后綴表達式是:
B.a b c d * + -
C.a b c * + d -
D.- + * a b c d
5.假設有5個整數以1、2、3、4、5的順序被壓入堆棧,且出棧順序為3、5、4、2、1,那么為了獲得這樣的輸出,堆棧大小至少為:
B.3
C.4
D.5
6.有六個元素以6、5、4、3、2、1的順序進棧,問哪個不是合法的出棧序列?
B.3 4 6 5 2 1
C.5 4 3 6 1 2
D.4 5 3 1 2 6
7.若一個棧的入棧序列為1、2、3、…、N,其輸出序列為p1、p2、p3、…、pN。若p1=N,則pi為:
B.n−i
C.n−i+1
D.不確定
8.令P代表入棧,O代表出棧。當利用堆棧求解后綴表達式1 2 3 + * 4 –
時,堆棧操作序列是:
B.PPOOPPOOPPOO
C.PPPOOPOOPPOO
D. PPPOOPOOPPOOPO
9.若采用帶頭、尾指針的單向鏈表表示一個堆棧,那么該堆棧的棧頂指針top應該如何設置?
B.將鏈表尾設為top
C.隨便哪端作為top都可以
D.鏈表頭、尾都不適合作為top
10.利用大小為n
的數組(下標從0
到n-1
)存儲一個棧時,假定棧從數組另一頭開始且top==n
表示棧空,則向這個棧插入一個元素時,修改top指針應當執行:
B.top++
C.top--
D.top不變
11.若棧采用順序存儲方式存儲,現兩棧共享空間V[m]
:top[i]
代表第i
(i
=1或2)個棧的棧頂;棧1的底在V[0]
,棧2的底在V[m-1]
,則棧滿的條件是:
B.top[1]+top[2]==m
C.top[1]==top[2]
D. top[1]+1==top[2]