考點一:棧的定義
只允許在表的末端進行插入和刪除的線性表。
考點二:進棧、退棧(重點: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 在正常情...