資料結構 棧 佇列 串 複習題

2021-08-26 13:16:38 字數 4787 閱讀 4434

第三章 棧和佇列

一 選擇題

1. 對於棧運算元據的原則是( b )。

a. 先進先出 b. 後進先出 c. 後進後出 d. 不分順序

2. 在作進棧運算時,應先判別棧是否( ① b ),在作退棧運算時應先判別棧是否( ② a)。當棧中元素為n個,作進棧運算時發生上溢,則說明該棧的最大容量為( ③b )。

為了增加記憶體空間的利用率和減少溢位的可能性,由兩個棧共享一片連續的記憶體空間時,應將兩棧的 ( ④ d)分別設在這片記憶體空間的兩端,這樣,當( ⑤c )時,才產生上溢。

①, ②: a. 空 b. 滿 c. 上溢 d. 下溢

③: a. n-1 b. n c. n+1 d.n/2

④: a. 長度 b. 深度 c. 棧頂 d. 棧底

⑤: a. 兩個棧的棧頂同時到達棧空間的中心點.

b. 其中乙個棧的棧頂到達棧空間的中心點.

c. 兩個棧的棧頂在棧空間的某一位置相遇.

d. 兩個棧均不空,且乙個棧的棧頂到達另乙個棧的棧底.

3. 乙個棧的輸入序列為123…n,若輸出序列的第乙個元素是n,輸出第i(1<=i<=n)個元素是( b )。

a. 不確定 b. n-i+1 c.i d. n-i

4. 若乙個棧的輸入序列為1,2,3,…,n,輸出序列的第乙個元素是i,則第j個輸出元素是( d )。

a. i-j-1 b. i-j c. j-i+1 d. 不確定的

5. 若已知乙個棧的入棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若pn是n,則pi是( d )。

a. ib. n-i c. n-i+1 d. 不確定

6. 有六個元素6,5,4,3,2,1 的順序進棧,問下列哪乙個不是合法的出棧序列?(c )

a. 5 4 3 6 1 2 b. 4 5 3 1 2 6 c. 3 4 6 5 2 1 d. 2 3 4 1 5 6

7. 設棧的輸入序列是1,2,3,4,則(d )不可能是其出棧序列。

a. 1,2,4,3, b. 2,1,3,4, c. 1,4,3,2,

d. 4,3,1,2, e. 3,2,1,4,

8. 乙個棧的輸入序列為1 2 3 4 5,則下列序列中不可能是棧的輸出序列的是( b )。

a. 2 3 4 1 5 b. 5 4 1 3 2 c. 2 3 1 4 5 d. 1 5 4 3 2

9. 設乙個棧的輸入序列是 1,2,3,4,5,則下列序列中,是棧的合法輸出序列的是( d )。

a. 5 1 2 3 4 b. 4 5 1 3 2 c. 4 3 1 2 5 d. 3 2 1 5 4

10. 某堆疊的輸入序列為a, b,c ,d,下面的四個序列中,不可能是它的輸出序列的是( d )。

a. a,c,b,db. b, c,d,a c. c, d,b, a d. d, c,a,b

11. 設abcdef以所給的次序進棧,若在進棧操作時,允許退棧操作,則下面得不到的序列為(d )。

a.fedcba b. bcafed c. dcefba d. cabdef

12. 設有三個元素x,y,z順序進棧(進的過程中允許出棧),下列得不到的出棧排列是( c )。

a.xyz b. yzx c. zxy d. zyx

13. 輸入序列為abc,可以變為cba時,經過的棧操作為( b )

a.push,pop,push,pop,push,pop b. push,push,push,pop,pop,pop

c.push,push,pop,pop,push,pop d.push,pop,push,push,pop,pop

15. 若棧採用順序儲存方式儲存,現兩棧共享空間v[1..m],top[i]代表第i個棧( i =1,2)棧頂,棧1的底在v[1],棧2的底在v[m],則棧滿的條件是(b )。

a. |top[2]-top[1]|=0 b. top[1]+1=top[2] c. top[1]+top[2]=m d.top[1]=top[2]

16. 棧在(d )中應用。

a. 遞迴呼叫 b. 子程式呼叫 c. 表示式求值 d. a,b,c

17. 乙個遞迴演算法必須包括( b )。

a. 遞迴部分 b. 終止條件和遞迴部分 c. 迭代部分 d.終止條件和迭代部分

21. 設計乙個判別表示式中左,右括號是否配對出現的演算法,採用( d )資料結構最佳。

a.線性表的順序儲存結構 b. 佇列 c. 線性表的鏈式儲存結構 d. 棧

22. 用鏈結方式儲存的佇列,在進行刪除運算時( d)。

a. 僅修改頭指標 b. 僅修改尾指標 c. 頭、尾指標都要修改 d. 頭、尾指標可能都要修改

23. 用不帶頭結點的單鏈表儲存佇列時,其隊頭指標指向隊頭結點,其隊尾指標指向隊尾結點,則在進行刪除操作時( d )。

a.僅修改隊頭指標 b. 僅修改隊尾指標

c. 隊頭、隊尾指標都要修改 d. 隊頭,隊尾指標都可能要修改

24. 遞迴過程或函式呼叫時,處理引數及返回位址,要用一種稱為( c )的資料結構。

a.佇列 b.多維陣列 c.棧d. 線性表

33. 棧的特點是( ① ),佇列的特點是( ② ),棧和佇列都是( ③ )。若進棧序列為1,2,3,4 則( ④ )不可能是乙個出棧序列(不一定全部進棧後再出棧);若進佇列的序列為1,2,3,4 則(⑤ )是乙個出佇列序列。baccf

①, ②: a. 先進先出 b. 後進先出 c. 進優於出 d. 出優於進

③: a.順序儲存的線性結構 b.鏈式儲存的線性結構

c.限制訪問點的線性結構 d.限制訪問點的非線性結構

④, ⑤: a. 3,2,1,4 b.3,2,4,1 c. 4,2,3,1 d. 4,3,2,1f. 1,2,3,4 g. 1,3,2,4

34. 棧和隊都是(c )

a.順序儲存的線性結構 b. 鏈式儲存的非線性結構

c. 限制訪問點的線性結構 d. 限制訪問點的非線性結構

二 判斷題

1. 消除遞迴不一定需要使用棧(√ )

2. 棧是實現過程和函式等子程式所必需的結構。(√ )

3. 兩個棧共用靜態儲存空間,對頭使用也存在空間溢位問題。(√ )

4.兩個棧共享一片連續記憶體空間時,為提高記憶體利用率,減少溢位機會,應把兩個棧的棧底分別設在這片記憶體空間的兩端。( √ )

5. 即使對不含相同元素的同一輸入序列進行兩組不同的合法的入棧和出棧組合操作,所得的輸出序列也一定相同。(× )

11. 任何乙個遞迴過程都可以轉換成非遞迴過程。( √ )

12. 只有那種使用了區域性變數的遞迴過程在轉換成非遞迴過程時才必須使用棧。( × )

13. 佇列是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進後出型結構。( × )

14. 通常使用佇列來處理函式或過程的呼叫。(× )

15. 佇列邏輯上是乙個下端和上端既能增加又能減少的線性表。(√ )

16. 迴圈佇列通常用指標來實現佇列的頭尾相接。(× )

17. 迴圈佇列也存在空間溢位問題。( √ )

18. 佇列和棧都是運算受限的線性表,只允許在表的兩端進行運算。(× )

19. 棧和佇列都是線性表,只是在插入和刪除時受到了一些限制。(√ )

20. 棧和佇列的儲存方式,既可以是順序方式,又可以是鏈式方式。(√ )

四 應用題

1. 名詞解釋:棧、佇列、迴圈佇列?

棧是只准在一端進行插入和刪除操作的線性表,允許插入和刪除的一端叫棧頂,另一端叫棧底。最後插入的元素最先刪除,故棧也稱後進先出(lifo)表。

佇列是允許在一端插入而在另一端刪除的線性表,允許插入的一端叫隊尾,允許刪除的一端叫隊頭。最先插入隊的元素最先離開(刪除),故佇列也常稱先進先出(fifo)表。

迴圈佇列:用常規意義下順序儲存結構的一維陣列表示佇列,由於佇列的性質(隊尾插入和隊頭刪除),容易造成「假溢位」現象,即隊尾已到達一維陣列的高下標,不能再插入,然而隊中元素個數小於佇列的長度(容量)。迴圈佇列是解決「假溢位」的一種方法。通常把一維陣列看成首尾相接。在迴圈佇列下,通常採用「犧牲乙個儲存單元」或「作標記」的方法解決「隊滿」和「隊空」的判定問題

2.(1) 什麼是遞迴程式?

(2) 遞迴程式的優、缺點是什麼?

(3) 遞迴程式在執行時,應借助於什麼來完成?

(4) 遞迴程式的入口語句、出口語句一般用什麼語句實現?

(1)乙個函式在結束本函式之前,直接或間接呼叫函式自身,稱為遞迴。例如,函式f在執行中,又呼叫函式f自身,這稱為直接遞迴;若函式f在執行中,呼叫函式g,而g在執行中,又呼叫函式f,這稱為間接遞迴。在實際應用中,多為直接遞迴,也常簡稱為遞迴。

(2)遞迴程式的優點是程式結構簡單、清晰,易證明其正確性。缺點是執行中佔記憶體空間較多,執行效率低。

(3)遞迴程式執行中需借助棧這種資料結構來實現。

(4)遞迴程式的入口語句和出口語句一般用條件判斷語句來實現。遞迴程式由基本項和歸納項組成。基本項是遞迴程式出口,即不再遞迴即可求出結果的部分;歸納項是將原來問題化成簡單的且與原來形式一樣的問題,即向著「基本項」發展,最終「到達」基本項。

3. 簡述順序儲存佇列的假溢位的避免方法及佇列滿和空的條件。

假溢位避免方法:採取迴圈佇列的形式。

4. 舉例說明順序隊的「假溢位」現象,並給出解決方案。

5. 怎樣判定迴圈佇列的空和滿?

在迴圈佇列下,仍定義front=rear時為隊空,而判斷隊滿則用兩種辦法,一是用「犧牲乙個單元」,即rear+1=front(準確記是(rear+1)%m=front,m是佇列容量)時為隊滿。另一種解法是「設標記」方法,如設標記tag,tag等於0情況下,若刪除時導致front=rear為隊空;tag=1情況下,若因插入導致front=rear則為隊滿。

資料結構複習題綱

最近把近期的部落格和生活中的一些瑣事進行了整理和歸納,從現在起,開始著手準備資料結構的複習了。同時做一些筆記與大家共同分享 進步!感謝大家的支援!記得點讚啦!第二章 鍊錶 第三章 棧和佇列 對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作 此外,乙個演算法還具有下列...

資料結構複習題(二)

一 選擇題 24分 1 下面關於線性表的敘述錯誤的是 a 線性表採用順序儲存必須占用一片連續的儲存空間 b 線性表採用鏈式儲存不必占用一片連續的儲存空間 c 線性表採用鏈式儲存便於插入和刪除操作的實現 d 線性表採用順序儲存便於插入和刪除操作的實現 2 設哈夫曼樹中的葉子結點總數為m,若用二叉鍊錶作...

資料結構複習題(五)

一 選擇題 20分 1 資料的最小單位是 a 資料項 b 資料型別 c 資料元素 d 資料變數 2 設一組初始記錄關鍵字序列為 50,40,95,20,15,70,60,45 則以增量d 4的一趟希爾排序結束後前4條記錄關鍵字為 a 40,50,20,95 b 15,40,60,20 c 15,20...