第3章棧和佇列自測卷
一、填空題
1. 向量(線性表)、棧和佇列都是線性結構,可以在向量的任意位置插入和刪除元素;對於棧只能在棧頂插入和刪除元素;對於佇列只能在隊尾插入和隊首刪除元素。
2. 棧是一種特殊的線性表,允許插入和刪除運算的一端稱為棧頂 。不允許插入和刪除運算的一端稱為棧底 。
3. 佇列是被限定為只能在表的一端進行插入運算,在表的另一端進行刪除運算的線性表。
4. 在乙個迴圈佇列中,隊首指標指向隊首元素的前乙個位置。
5. 在具有n個單元的迴圈佇列中,隊滿時共有 n -1 個元素。
6. 向棧中壓入元素的操作是先移動棧頂指標後存入元素
7. 從迴圈佇列中刪除乙個元素時,其操作是先移動隊首指標 ,後取出元素 。
8. 帶表頭結點的空迴圈雙向鍊錶的長度等於 0 。
二、判斷正誤(判斷下列概念的正確性,並作出簡要的說明。)(每小題1分,共10分)
( 錯 )1. 線性表的每個結點只能是乙個簡單型別,而鍊錶的每個結點可以是乙個複雜型別。
( 錯 )2. 在表結構中最常用的是線性表,棧和佇列不太常用。
( 對 )3. 棧是一種對所有插入、刪除操作限於在表的一端進行的線性表,是一種後進先出型結構。
( 對 )4. 對於不同的使用者,乙個表結構既可以是棧,也可以是佇列,也可以是線性表。
( 錯 )5. 棧和鍊錶是兩種不同的資料結構。
( 錯 )6. 棧和佇列是一種非線性資料結構。
( 對 )7. 棧和佇列的儲存方式既可是順序方式,也可是鏈結方式。
( 對 )8. 兩個棧共享一片連續記憶體空間時,為提高記憶體利用率,減少溢位機會,應把兩個棧的棧底分別設在這片記憶體空間的兩端
( 錯 )9. 隊是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進後出型結構。
( 錯 )10. 乙個棧的輸入序列是12345,則棧的輸出序列不可能是12345。
三、單項選擇題(每小題1分,共20分)
( b )1. 棧中元素的進出原則是
a.先進先出 b.後進先出 c.棧空則進 d.棧滿則出
( c )2. 若已知乙個棧的入棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若p1=n,則pi為
a.i b.n=i c.n-i+1 d.不確定
( b )3. 判定乙個棧st(最多元素為m0)為空的條件是
a.st->top<>0 b.st->top=0 c.st->top<>m0 d.st->top=m0
( a )4. 判定乙個佇列qu(最多元素為m0)為滿佇列的條件是
a.qu->rear - qu->front = = m0 b.qu->rear - qu->front -1= = m0
c.qu->front = = qu->rearqu->front = = qu->rear+1
( d )5.陣列q[n]用來表示乙個迴圈佇列,f為當前佇列頭元素的前一位置,r為隊尾元素的
(a)r-fn+f-r)% n; (c)n+r-fn+r-f)% n
6. 設有4個資料元素a1、a2、a3和a4,對他們分別進行棧操作或隊操作。在進棧或進隊操作時,按a1、a2、a3、a4次序每次進入乙個元素。假設棧或隊的初始狀態都是空。
現要進行的棧操作是進棧兩次,出棧一次,再進棧兩次,出棧一次;這時,第一次出棧得到的元素是 a ,第二次出棧得到的元素是 b ;類似地,考慮對這四個資料元素進行的隊操作是進隊兩次,出隊一次,再進隊兩次,出隊一次;這時,第一次出隊得到的元素是 c ,第二次出隊得到的元素是 d 。經操作後,最後在棧中或隊中的元素還有 e 個。
a~d:①a1 ②a2 ③ a3 ④a4e: ①1 ②2 ③ 3 ④ 0
答:a、b、c、d、e分別為 2 、 4 、 1 、 2 、 2
7. 棧是一種線性表,它的特點是 a 。設用一維陣列a[1,…,n]來表示乙個棧,a[n]為棧底,用整型變數t指示當前棧頂位置,a[t]為棧頂元素。
往棧中推入(push)乙個新元素時,變數t的值 b ;從棧中彈出(pop)乙個元素時,變數t的值 c 。設棧空時,有輸入序列a,b,c,經過push,pop,push,push,pop操作後,從棧中彈出的元素的序列是 d ,變數t的值是 e 。
a: ① 先進先出 ②後進先出 ③進優於出出優於進 ⑤ 隨機進出
b,c: ① 加1 ②減1不變清0 ⑤ 加2 ⑥減2
d: ① a,bb,cc,ab,ac,ba,c
e: ① n+1 ②n+2nn-1 ⑤ n-2
答:a、b、c、d、e分別為 2 、 2 、 1 、 6 、 4
8. 在做進棧運算時,應先判別棧是否 a ;在做退棧運算時,應先判別棧是否 b 。當棧中元素為n個,做進棧運算時發生上溢,則說明該棧的最大容量為 c 。
為了增加記憶體空間的利用率和減少溢位的可能性,由兩個棧共享一片連續的記憶體空間時,應將兩棧的 d 分別設在這片記憶體空間的兩端,這樣,只有當 e 時,才產生上溢。
a,b:①空滿 ③ 上溢 ④ 下溢
c: ①n-1 ② nn+1 ④ n/2
d: ① 長度 ②深度 ③ 棧頂 ④ 棧底
e:①兩個棧的棧頂同時到達棧空間的中心點 ②其中乙個棧的棧頂到達棧空間的中心點
③兩個棧的棧頂在達棧空間的某一位置相遇 ④兩個棧均不空,且乙個棧的棧頂到達另乙個棧的棧底
答:a、b、c、d、e分別為 2 、 1 、 2 、 4 、 3
四、簡答題(每小題4分,共20分)
1. 說明線性表、棧與隊的異同點。
2. 設有編號為1,2,3,4的四輛列車,順序進入乙個棧式結構的車站,具體寫出這四輛列車開出車站的所有可能的順序。
3. 假設正讀和反讀都相同的字串行為「回文」,例如,『abba』和『abcba』是回文,『abcde』 和『ababab』則不是回文。假設一字串行已存入計算機,請分析用線性表、堆疊和佇列等方式正確輸出其回文的可能性?
4. 順序隊的「假溢位」是怎樣產生的?如何知道迴圈佇列是空還是滿?
5. 設迴圈佇列的容量為40(序號從0到39),現經過一系列的入隊和出隊運算後,有
① front=11,rear=19; ② front=19,rear=11;問在這兩種情況下,迴圈佇列中各有元素多少個?
五、閱讀理解(每小題5分,共20分)
1. 按照四則運算加、減、乘、除和冪運算(↑)優先關係的慣例,並仿照教材例3-2的格式,畫出對下列算術表示式求值時運算元棧和運算子棧的變化過程:
a-b×c/d+e↑f
2. 寫出下列程式段的輸出結果(棧的元素型別selem type為char)。
void main( );
printf(x);
}4. 簡述以下演算法的功能(棧和佇列的元素型別均為int)。
void algo3(queue &q);
while(!stackempty(s))
}六、演算法設計(每小題5分,共15分。至少要寫出思路)
1. 假設乙個算術表示式中包含圓括弧、方括弧和花括弧三種型別的括弧,編寫乙個判別表示式中括弧是否正確配對的函式correct(exp,tag);其中:exp為字串型別的變數(可理解為每個字元占用乙個陣列元素),表示被判別的表示式,tag為布林型變數。
資料結構第3章棧與佇列習題
9 設n個元素進棧序列是p1,p2,pn,其輸出序列是1,2,3,n,若p3 1,則p1的值 a 可能是2 b 一定是1 c 不可能是2 d 不可能是3 10 設n個元素進棧序列是p1,p2,pn,其輸出序列是1,2,3,n,若p3 3,則p1的值 a 可能是2 b 一定是2 c 不可能是1 d 一...
資料結構1800試題 第3章棧和佇列答案
第三章棧和佇列 一 選擇題 二 判斷題 部分答案解釋如下。1 尾遞迴的消除就不需用棧 2 這個數是前序序列為1,2,3,n,所能得到的不相似的二叉樹的數目。三 填空題 1 操作受限 或限定僅在表尾進行插入和刪除操作 後進先出 2 棧 3 3 1 2 4 23 100ch 5 0 n 1 top 1 ...
《資料結構》習題3棧和佇列
1.乙個棧的入棧序列a,b,c,d,e,則棧的不可能的輸出序列是 c a.edcba b.decba c.dceab d.abcde 2.若已知乙個棧的入棧序列是1,2,3,n,其輸出序列為p1,p2,p3,pn,若p1 n,則pi為 c a.i b.n i c.n i 1 d.不確定 3.棧結構通...