第三章棧和佇列

2022-12-09 06:54:03 字數 2899 閱讀 2649

考點一:棧的定義

只允許在表的末端進行插入和刪除的線性表。

考點二:進棧、退棧(重點:p.90.只考順序棧,鏈式棧不考)

(1)動態順序儲存表示:

◆結點進棧:首先將資料元素儲存到棧頂(top所指的當前位置),然後執行top加1,使top指向棧頂的下乙個儲存位置;

◆ 結點出棧:首先執行top減1,使top指向棧頂元素的儲存位置,然後將棧頂元素取出。

(2)靜態順序儲存表示:

◆ 結點進棧:首先執行top加1,使top指向新的棧頂位置,然後將資料元素儲存到棧頂(top所指的當前位置)。

◆ 結點出棧:首先把top指向的棧頂元素取出,然後執行top減1,使top指向新的棧頂位置。

若棧的陣列有maxsize個元素,則top=maxsize-1時棧滿。

例題:設有4個資料元素a1、a2、a3和a4,對他們分別進行棧操作或隊操作。在進棧或進隊操作時,按a1、a2、a3、a4次序每次進入乙個元素。假設棧或隊的初始狀態都是空。

現要進行的棧操作是進棧兩次,出棧一次,再進棧兩次,出棧一次;這時,第一次出棧得到的元素是 a ,第二次出棧得到的元素是 b 是;類似地,考慮對這四個資料元素進行的隊操作是進隊兩次,出隊一次,再進隊兩次,出隊一次;這時,第一次出隊得到的元素是 c ,第二次出隊得到的元素是 d 。經操作後,最後在棧中或隊中的元素還有 e 個。

供選擇的答案:

a~d:①a1 ②a2 ③ a3 ④a4

e: ①1 ②2 ③ 3 ④ 0

答:abcde=2, 4, 1, 2, 2

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

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

解釋:當p1=n,即n是最先出棧的,根據棧的原理,n必定是最**棧的(事實上題目已經表明了),那麼輸入順序必定是1,2,3,…,n,則出棧的序列是n,…,3,2,1。

(若不要求順序出棧,則輸出序列不確定)

考點三、四:遞迴過程和遞迴棧 (重點:p105(請結合p。106的圖3.12理解以下文字))

遞迴呼叫:乙個函式(或過程)直接或間接地呼叫自己本身。

◆為保證遞迴呼叫正確執行,系統設立乙個「遞迴工作棧」,作為整個遞迴呼叫過程期間使用的資料儲存區。

◆每一層遞迴包含的資訊如:引數、區域性變數、上一層的返回位址構成乙個「工作記錄」 。每進入一層遞迴,就產生乙個新的工作記錄壓入棧頂;每退出一層遞迴,就從棧頂彈出乙個工作記錄。

考點五:佇列定義與操作

佇列:只允許在表的一端進行插入,而在另一端進行刪除。

隊首:允許進行刪除的一端稱為隊首。

隊尾:允許進行插入的一端稱為隊尾。

考點六:順序佇列(重點:佇列操作:插入與刪除)

設立乙個隊首指標front ,乙個隊尾指標rear ,分別指向隊首和隊尾元素。

◆ 初始化:front=rear=0。

◆ 入隊:將新元素插入rear所指的位置,然後rear加1。

◆ 出隊:刪去front所指的元素,然後加1並返回被刪元素。

◆ 隊列為空:front=rear。

◆ 隊滿:rear=max_queue_size-1或front=rear。

順序佇列中存在「假溢位」現象。

考點七:迴圈佇列(重點:p116.圖3.20和判斷隊滿)

◆ rear所指的單元始終為空。

◆ 迴圈隊列為空:front=rear 。

◆ 迴圈佇列滿:(rear+1)%max_queue_size =front。

入隊操作:

status insert_cirqueue(sqqueue q , elemtype e)

/* 將資料元素e插入到迴圈佇列q的隊尾 */

出隊操作:

status delete_cirqueue(sqqueue q, elemtype *x )

/* 將迴圈佇列q的隊首元素出隊 */

例題:1. 棧和佇列都是線性結構,可以在向量的任何位置插入和刪除元素;對於棧只能在棧頂插入和刪除元素;對於佇列只能在隊尾插入和隊首刪除元素。

2. 棧是一種特殊的線性表,允許插入和刪除運算的一端稱為棧頂 。不允許插入和刪除運算的一端稱為棧底 。

3. 佇列是被限定為只能在表的一端進行插入運算,在表的另一端進行刪除運算的線性表。

4. 在乙個迴圈佇列中,隊首指標指向隊首元素的前乙個位置。

5. 在具有n個單元的迴圈佇列中,隊滿時共有 n-1 個元素。

6. 向棧中壓入元素的操作是先移動棧頂指標 ,後存入元素 。

7. 從迴圈佇列中刪除乙個元素時,其操作是先移動隊首指標 ,後取出元素 。

8.帶表頭結點的空迴圈雙向鍊錶的長度等於 0 。

解:( √ )9. 棧是一種對所有插入、刪除操作限於在表的一端進行的線性表,是一種後進先出型結構。

( √ )10. 對於不同的使用者,乙個表結構既可以是棧,也可以是佇列,也可以是線性表。

正確,都是線性邏輯結構,棧和佇列其實是特殊的線性表,對運算的定義略有不同而已。

( × )11. 棧和鍊錶是兩種不同的資料結構。

錯,棧是邏輯結構的概念,是特殊殊線性表,而鍊錶是儲存結構概念,二者不是同類項。

( × )12. 棧和佇列是一種非線性資料結構。

錯,他們都是線性邏輯結構,棧和佇列其實是特殊的線性表,對運算的定義略有不同而已。

( √ )13. 棧和佇列的儲存方式既可是順序方式,也可是鏈結方式

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

錯,後半句不對。

( × )15. 乙個棧的輸入序列是12345,則棧的輸出序列不可能是12345。

錯,有可能。

資料結構第三章棧和佇列練習及答案

a qu.front qu.rear b qu.front qu.rear c qu.front qu.rear 1 m0 d qu.front qu.rear 1 m0 14 迴圈佇列用陣列存放其元素值a 0,m 1 已知其頭尾指標分別是rear和front,則當前佇列的元素個數是 a rear ...

第三章 TCPIP協議棧

1 世紀70年代中期,arpa啟動了網際網路 interner 研究專案。arpa啟動這個研究專案的目的就是為了解決不用系統之間的互聯問題,即把它們統一到同一種規範上來。這個不用系統共同遵守的規範就是tcp ip協議棧。2 1978年,tcp ip協議正式可執行的版本完成,1980年前後,arpa開...

第三章意識和注意

1 意識是人類反映客觀事物的最高心理形式 意識的核心是言語和思維 2 意識活動主要分為自我意識和對周圍事物的意識 3 意識的三種水平是無意識 下意識和潛意識 4 人類的意識的基本特徵有意識的自覺性 意識的能動性和意識的社會歷史制約性。5 自我意識的三種成分是自我認知 自我體驗和自我調節 6 在正常情...