栈和队列学习要点
文章目錄
- 概述
 - 重點(diǎn)/難點(diǎn)/要點(diǎn)
 - 知識(shí)點(diǎn)整理
 - 練習(xí)
 
概述
棧和隊(duì)列是常用的基本數(shù)據(jù)結(jié)構(gòu),不僅直接用于描述問題,而且作為輔助數(shù)據(jù)結(jié)構(gòu)大量用于算法實(shí)現(xiàn)中。從數(shù)據(jù)元素間的邏輯關(guān)系看,棧和隊(duì)列是線性結(jié)構(gòu);從操作方式和操作集合看,棧和隊(duì)列與線性表有很多不同,有各自的特殊性,但都是操作受限的線性表。本章知識(shí)點(diǎn)的組織結(jié)構(gòu)如下圖所示:
 
重點(diǎn)/難點(diǎn)/要點(diǎn)
本章的重點(diǎn)是:
本章的難點(diǎn)是:
棧學(xué)習(xí)要點(diǎn):
 對(duì)于棧要抓住一條明線:棧的邏輯結(jié)構(gòu)→棧的存儲(chǔ)結(jié)構(gòu)→棧的實(shí)現(xiàn)。
 對(duì)于棧的邏輯結(jié)構(gòu),要從棧的定義入手,在與線性表的定義和操作比較的基礎(chǔ)上,得出棧的操作特性,最后給出棧的抽象數(shù)據(jù)類型定義。
 對(duì)于棧的存儲(chǔ)結(jié)構(gòu)要把握兩條支線:順序棧和鏈棧,棧的存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)都與線性表類似,本質(zhì)上是線性表的簡(jiǎn)化。
 對(duì)于棧的主要抓住以下三條暗線。
隊(duì)列學(xué)習(xí)要點(diǎn):
 對(duì)于隊(duì)列的教學(xué)要抓住一條明線:隊(duì)列的邏輯結(jié)構(gòu)→隊(duì)列的存儲(chǔ)結(jié)構(gòu)→隊(duì)列的實(shí)現(xiàn)。
 對(duì)于隊(duì)列的邏輯結(jié)構(gòu),要從隊(duì)列的定義出發(fā),在與線性表的定義和操作比較的基礎(chǔ)上,得出隊(duì)列的操作特性,最后給出隊(duì)列的抽象數(shù)據(jù)類型定義。
 對(duì)于隊(duì)列的存儲(chǔ)結(jié)構(gòu)要把握兩條支線:循環(huán)隊(duì)列和鏈隊(duì)列,隊(duì)列的存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)與線性表類似,本質(zhì)上是線性表的簡(jiǎn)化。
 隊(duì)列的暗線與棧的暗線類似,此外,還要把握以下兩條暗線。
知識(shí)點(diǎn)整理
練習(xí)
棧
 在棧滿的情況下不能做進(jìn)棧操作,否則將產(chǎn)生上溢,因此對(duì)于入棧操作首先要判斷是否棧滿。(×)
 棧結(jié)構(gòu)只允許在棧頂進(jìn)行存取操作,所有基本操作的時(shí)間復(fù)雜度均是O(1)。(√)
 三個(gè)元素按a、b、c的次序進(jìn)棧,且每個(gè)元素只允許進(jìn)一次棧,則出棧序列一定是abc。(×)
 在順序棧的類定義中,成員變量top是指針類型。(×)
 設(shè)top表示棧頂元素所在下標(biāo),順序棧的棧空條件是(B),棧滿條件是(D)。
 A.top=0 B.top=-1 C.top=StackSize D.top=StackSize-1
 鏈棧附設(shè)頭結(jié)點(diǎn)不會(huì)使插入、刪除等基本操作更加方便。(√)
 在鏈棧中執(zhí)行入棧操作需要修改兩個(gè)指針,同單鏈表的插入操作一樣,修改指針有先后順序。(√)
 在順序棧和鏈棧中,語句“top- -;”實(shí)現(xiàn)將top指向當(dāng)前棧頂元素的下一個(gè)元素。(×)
隊(duì)列
 有三個(gè)元素按a、b、c的順序入隊(duì),每個(gè)元素只能入隊(duì)一次,則出隊(duì)序列只能是abc。(√)
 在順序隊(duì)列中,入隊(duì)操作和出隊(duì)操作的時(shí)間復(fù)雜度均是O(1)。(×)
 由于隊(duì)列的單向移動(dòng)性,順序隊(duì)列一定會(huì)發(fā)生假溢出現(xiàn)象。(×)
 由于隊(duì)列只允許在線性表的兩端執(zhí)行存取操作,所有基本操作的時(shí)間復(fù)雜度均為O(1)。(√)
 設(shè)存儲(chǔ)循環(huán)隊(duì)列的數(shù)組長(zhǎng)度為m,則(rear+1)%m實(shí)現(xiàn)將rear的值在循環(huán)意義下加1。(√)
 在鏈隊(duì)列中附設(shè)頭結(jié)點(diǎn),能夠使入隊(duì)和出隊(duì)操作更加方便。(√)
 在循環(huán)隊(duì)列中,設(shè)front指向隊(duì)頭元素的前一個(gè)位置,則當(dāng)前的隊(duì)頭元素是(C)。
 A.data[front] B.data[++front] C.data[(front+1)%m] D.data[front++]
 在鏈隊(duì)列中,出隊(duì)操作在隊(duì)頭執(zhí)行,與rear指針無關(guān)。(B)(要判空)
 若用一個(gè)長(zhǎng)度為6的數(shù)組來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)前rear和front的值分別為4和2,則從隊(duì)列中刪除一個(gè)元素,再增加兩個(gè)元素后,rear的值是(0),front的值是(3)。
參考資料:《數(shù)據(jù)結(jié)構(gòu)(從概念到C++實(shí)現(xiàn))》清華大學(xué)出版社,王紅梅
總結(jié)
                            
                        - 上一篇: Ubuntu1804安装Mysql
 - 下一篇: 人工智能如何实现两难抉择?