一、判斷題
1.若一個棧的輸入序列為1,2,3,……,N,輸出序列的第一個元素為i,則第j個輸出的元素是j-i-1 (×)解析:應該是不確定的,不能保證數字出棧后不會再入棧
2.所謂“循環隊列”是指用單向循環鏈表或者循環數組表示的隊列 (×)解析:循環隊列指的是后者,用數組表示的隊列,利用求余數運算使得頭尾相接
3.在對不帶頭結點的鏈隊列做出隊操作時,不會改變頭指針的值 (×)解析:會改變頭指針的值,變成相連指針的值
4.不論是入隊列操作還是入棧操作,在順序存儲結構上都需要考慮“溢出”的情況 (√)解析:因為存儲空間是有限的
5.隊列和棧都是運算受限的線性表,只允許在表的兩端進行運算 (×)解析:前半句對,后半句中棧只能在一段進行操作,只有隊列才是在兩端進行操作
6.棧和隊列的存儲方式,既可以是順序方式,也可以是鏈式方式 (√)
7.循環隊列也存在着空間溢出問題 (√)解析:循環隊列的存儲空間也是有限的
8.循環隊列執行出隊操作時會引起大量元素的移動 (×)
9.棧是插入和刪除只能在一端進行的線性表;隊列是插入在一端進行,刪除在另一端進行的線性表 (√)
10.在n個元素連續進棧以后,他們的出棧順序和進棧順序一定正好相反 (√)
11.環形隊列中有多少個元素可以根據隊首指針和隊尾指針的值來計算 (√)
12.棧和隊列的插入和刪除操作特殊,所以,棧和隊列是非線性結構 (×)
13.序列{1,2,3,4,5}依次入棧,則不可能得到{3,4,1,2,5}的出棧序列 (√)
14.隊列中允許插入的一端叫隊頭,允許刪除的一端叫隊尾 (×)解析:正好相反,允許插入的一端叫隊尾,允許刪除的一端叫隊頭,前頭后尾
二、單選題
2-1.若用大小為6的數組來實現循環隊列,且當前front和rear的值分別為0和4。當從隊列中刪除兩個元素,再加入兩個兩個元素后,front和rear的值分別為多少:
A.2和0
B.2和2
C.2和4
D.2和6
解析:初始化創建空隊列時,令front=rear=0,每當插入新的隊列尾元素時,rear增1,每當刪除一個隊列首元素時,front增1。則刪除一個,front++,增加一個rear++
2-2.如果循環隊列用大小為m的數組表示,且用隊頭指針front和隊列元素個數size代替一般循環隊列中的front和rear指針來表示隊列的范圍,那么這樣的循環隊列可以容納的元素個數最多為:
A.m-1
B.m
C.m+1
D.不能確定
2-3.以下數據結構中,()是非線性數據結構。
A.樹
B.字符串
C.隊列
D.棧
2-4.設棧S和隊列Q的初始狀態均為空,元素{1,2,3,4,5,6,7}依次進入棧S。若每個元素出棧后立即進入隊列Q,且七個元素出隊的順序是{2,5,6,4,7,3,1},則棧S的容量至少是:
A.1
B.2
C.3
D.4
2-5.線性表、堆棧、隊列的主要區別是什么?
A.線性表用指針,堆棧和隊列用數組
B.堆棧和隊列都是插入、刪除收到約束的線性表
C.線性表和隊列都可以用循環鏈表實現,但堆棧不能
D.堆棧和隊列都不是線性結構,而線性表是
解析:A中它們都可以用指針和數組,C中線性表不可以用循環列表實現,D中線性表是線性結構