波波的資料結構-棧

weixin_45458350發表於2020-12-19

系列文章目錄

波波的資料結構屬實上的快,這裡將會寫些pta的解析,算是複習 預習,幫助我與大家期末不掛科




一、選擇題

2-1
若順序棧的棧頂指標指向棧頂元素位置,則壓入新元素時,應( A)。
A.先移動棧頂指標
B.先存入元素,再移動棧頂指標
C.先後次序無關緊要
D.同時進行
解析:看書上程式碼易得,順序棧實際上是在結構體中定義一個陣列,棧頂指標是陣列的下標,下標加一後陣列存入一個元素
2-2
鏈式棧與順序棧相比,一個比較明顯的優點是( B)。
A.插入操作更加方便
B.通常不會出現棧滿的情況
C.不會出現棧空的情況
D.刪除操作更加方便
解析:鏈式棧是在表頭進行操作,順序棧要先定義一個陣列,會出現棧滿的情況
2-3
若(a-b)(c+d)是中序表示式,則其後序表示式是( B)。
A.abcd+
-
B.ab-cd+*
C.ab-cd+
D.a-bcd+

解析:後序表示式是遇到數字納入棧,遇到運算子後取出棧頂的兩個數字進行運算,結果再納入棧,至於如何將中序表示式,我們可以先將括號內的運算子移到對應的右括號,再將括號移除。
2-4
字元A,B,C依次進入一個棧,按出棧的先後順序組成不同的字串,則至多可以組成(B )個不同的字串。
A.14
B.5
C.6
D.8
解析:因為不可能出現CAB這一字串 所以6-1個
2-5
下列演算法的功能是(B)。

void func( )
{
      int x;
      Statck s;    //定義棧s
      cin >> x;
      while (x<>0)
      {
         push(s,x);
         cin>>x;
       }
      while (!EmptyStack(s))
          cout << pop(s);
 }

A.以讀入資料的相同順序輸出資料
B.以讀入資料的相反順序輸出資料
C.將資料讀入到棧中進行儲存
D.讀入一批資料到棧中進行求和並輸出
解析:push(s,x)將x值納入棧,pop(s)將棧頂的元素彈出
2-6
若已知一個棧的進棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若p1 = 3,則p2為(A)。
A.可能是2
B.一定是2
C.可能是1
D.一定是1
解析:因為p1=3,所以1,2先納入棧,2一定比1先出棧
2-7
棧的插入和刪除操作在(A )進行。
A.棧頂
B.棧底
C.任意位置
D.指定位置
2-8
假設一個棧的輸入序列是1,2,3,4,則不可能得到的輸出序列是( B)。
A.1,2,3,4
B.4,1,2,3
C.4,3,2,1
D.1,3,4,2
解析:和第六題類似
2-9
令P代表入棧,O代表出棧。當利用堆疊求解字尾表示式1 2 3 + * 4 –時,堆疊操作序列是:(D)
A.PPPOOPOO
B.PPOOPPOOPPOO
C.PPPOOPOOPPOO
D.PPPOOPOOPPOOPO
解析:之前說過後序表示式是遇到數字納入棧,遇到運算子後取出棧頂的兩個數字進行運算,結果再納入棧,123入棧,取出23進行+運算再納入棧,取出61進行運算
2-10
令P代表入棧,O代表出棧。若利用堆疊將中綴表示式3
2+8/4轉為字尾表示式,則相應的堆疊操作序列是(C)
A.PPPOOO
B.POPOPO
C.POPPOO
D.PPOOPO
解析:字尾表示式為32*84/+ *入棧,然後出棧 +入棧,/入棧,然後分別出棧
2-11
若top為指向棧頂元素的指標,判定棧S(最多容納m個元素)為空的條件是:(B)
A.S->top == 0

B.S->top == -1

C.S->top != m-1

D.S->top == m-1
解析:棧為空時,棧頂指標位於-1處
2-12
若棧採用順序儲存方式儲存,現兩棧共享空間V[m]:top[i]代表第i(i=1或2)個棧的棧頂;棧1的底在V[0],棧2的底在V[m-1],則棧滿的條件是:(D)
A.|top[2]-top[1]|==0

B.top[1]+top[2]==m

C.top[1]==top[2]

D.top[1]+1==top[2]

解析:當top[1]+1==top[2]時,說明兩個棧相鄰,共享空間全部佔滿
2-13
若棧S​1中儲存整數,棧S​2中儲存運算子,函式F()依次執行下述各步操作:
(1)從S​1中依次彈出兩個運算元a和b;
(2)從S2中彈出一個運算子op;
(3)執行相應的運算b op a;
(4)將運算結果壓入S​1​​ 中。
假定S​1中的運算元依次是{ 5, 8, 3, 2 }(2在棧頂),S​2中的運算子依次是{ *, -, + }(+在棧頂)。呼叫3次F()後,S1棧頂儲存的值是:(A)
A.-15
B.15
C.-20
D.20
解析 1.a=2,b=3,op=*,3+2=5,2.5-8=-3,3.-3/*5=-15
2-14
設一個棧的輸入序列是1、2、3、4、5,則下列序列中,是棧的合法輸出序列的是?(A)
A.3 2 1 5 4
B.5 1 2 3 4
C.4 5 1 3 2
D.4 3 1 2 5
解析:和前面題目一樣
2-15
給定一個堆疊的入棧序列為{ 1, 2, ⋯, n },出棧序列為{ p​1, p​2, ⋯, p​n}。如果p​2 =n,則存在多少種不同的出棧序列?(B)
A.n
B.n−1
C.2
D.1
解析:p1有n-1種可能
2-16
若已知一個進棧序列是1,2,3,……,n,其輸出序列是p1,p2,p3,……pn, 若p1=n, 則pi(1<i<n)為(C )。
A.i
B.n-i
C.n-i+1
D.不確定
解析:相當於倒序輸出進棧序列

這裡暫時只能給出選擇題的解析,函式部分請看書上的程式碼

相關文章