資料結構——棧和佇列
棧和佇列
一、選擇題
~~01|03|1|1
^^設有一個遞迴演算法如下
int fact(int n) { //n大於等於0
if(n<=0) return 1;
else return n*fact(n-1); }
則計算fact(n)需要呼叫該函式的次數為( A )。
A. n+1 B. n-1
C. n D. n+2
~~01|03|1|1
^^棧在 ( D )中有所應用。
A.遞迴呼叫 B.函式呼叫
C.表示式求值 D.前三個選項都有
~~01|03|1|1
^^為解決計算機主機與印表機間速度不匹配問題,通常設一個列印資料緩衝區。主機將要輸出的資料依次寫入該緩衝區,而印表機則依次從該緩衝區中取出資料。該緩衝區的邏輯結構應該是( A )。
A.佇列 B.棧
C. 線性表 D.有序表
~~01|03|1|1
^^設棧S和佇列Q的初始狀態為空,元素e1、e2、e3、e4、e5和e6依次進入棧S,一個元素出棧後即進入Q,若6個元素出隊的序列是e2、e4、e3、e6、e5和e1,則棧S的容量至少應該是(B )。
A.2 B.3
C.4 D.6
~~01|03|1|1
^^設計一個判別表示式中左,右括號是否配對出現的演算法,採用(D )資料結構最佳。
A.線性表的順序儲存結構 B.佇列
C. 線性表的鏈式儲存結構 D. 棧
~~01|03|1|1
^^用鏈式方式儲存的佇列,在進行刪除運算時( D)。
A. 僅修改頭指標 B. 僅修改尾指標
C. 頭、尾指標都要修改 D. 頭、尾指標可能都要修改
~~01|03|1|1
^^迴圈佇列儲存在陣列A[0…m]中,則入隊時的操作為(D )。
A. rear=rear+1 B. rear=(rear+1)%(m-1)
C. rear=(rear+1)%m D. rear=(rear+1)%(m+1)
~~01|03|1|1
^^最大容量為n的迴圈佇列,隊尾指標是rear,隊頭是front,則隊空的條件是(B )。
A. (rear+1)%nfront B. rearfront
C.rear+1front D. (rear-l)%nfront
~~01|03|1|1
^^一個遞迴演算法必須包括( B)。
A. 遞迴部分 B. 終止條件和遞迴部分
C. 迭代部分 D. 終止條件和迭代部分
~~01|03|1|1
^^以下(B )不是佇列的基本運算?
A.從隊尾插入一個新元素 B.從佇列中刪除第i個元素
C.判斷一個佇列是否為空 D.讀取隊頭元素的值
~~01|03|1|1
^^一個佇列的入隊序列是1,2,3,4,則佇列的輸出序列是(B )。
A.4,3,2,1 B.1,2,3,4
C.1,4,3,2 D.3,2,4,1
~~01|03|1|1
^^在迴圈佇列中,若front與rear 分別表示對頭元素和隊尾元素的位置,則判斷迴圈佇列滿的條件是(A )。
A.front==(rear+1)%MAXQSIZE B.rearfront+1
C.frontrear D.front==0
~~01|03|1|1
^^向一個棧頂指標為h的帶頭結點的鏈棧中插入指標s所指的結點時,應執行( D)操作。
A.h->next=s ; B.s->next=h ;
C.s->next=h ;h =s ; D.s->next=h->next ;h->next=s ;
~~01|03|1|1
^^輸入序列為ABC,可以變為CBA時,經過的棧操作為( B)。
A.push,pop,push,pop,push,pop B.push,push,push,pop,pop,pop
C.push,push,pop, pop,push,pop D.push,pop,push,push,pop,pop
~~01|03|1|1
^^若棧採用順序儲存方式儲存,現兩棧共享空間V[1 m],top[1]、top[2]分別代表第1和第2個棧的棧頂,棧1的底在V[1],棧2的底在V[m],則棧滿的條件是(B )。
A.top[2]-top[1]|=0 B.top[1]+1=top[2]
C.top[1]+top[2]=m D.top[1]=top[2]
~~01|03|1|1
^^允許對佇列進行的操作有(D ) 。
A.對佇列中的元素排序 B.取出最近進隊的元素
C.在隊頭元素之前插入元素 D.刪除隊頭元素
~~01|03|1|1
^^對於迴圈佇列(D )。
A.無法判斷佇列是否為空 B.無法判斷佇列是否為滿
C.佇列不可能滿 D.以上說法都不對
~~01|03|1|1
^^若用一個大小為6的數值來實現迴圈佇列,且當前rear和front的值分別為0和3,當從佇列中刪除一個元素,再加入兩個元素後,rear和front的值分別為(C )。
A.1和5 B.2和4
C.4和2 D.5和1
~~01|03|1|1
^^佇列的“先進先出”特性是指(D ) 。
A.最早插入佇列中的元素總是最後被刪除
B.當同時進行插入、刪除操作時,總是插入操作優先
C.每當有刪除操作時,總是要先做一次插入操作
D.每次從佇列中刪除的總是最早插入的元素
~~01|03|1|1
^^和順序棧相比,鏈棧有一個比較明顯的優勢是(A )。
A.通常不會出現棧滿的情況 B. 通常不會出現棧空的情況
C.插入操作更容易實現 D.刪除操作更容易實現
~~01|03|1|1
^^用不帶頭結點的單鏈表儲存佇列,其頭指標指向隊頭結點,尾指標指向隊尾結點,則在進行出隊操作時(C ) 。
A.僅修改隊頭指標 B.僅修改隊尾指標
C.隊頭、隊尾指標都可能要修改 D.隊頭、隊尾指標都要修改
~~01|03|1|1
^^設有一個遞迴演算法如下
int x (int n) {
if (n<=3) return 1;
else return x(n-2)+x(n-4)+1;
}
試問 x(8) 返回值為(B )。
A. 8 B.9
C.10 D.11
~~01|03|1|1
^^將一個遞迴演算法改為對應的非遞迴演算法時,通常需要使用(A )。
A.棧 B.佇列
C.迴圈佇列 D.優先佇列
~~01|03|1|1
^^設陣列Data[0…m]作為迴圈佇列SQ的儲存空間,front為隊頭指標,rear為隊尾指標,則執行出隊操作的語句為(D )。
A.front=front+1 B.front=(front+1)% m
C.rear=(rear+1)%m D.front=(front+1)%(m+1)
二、判斷題
~~02|03|1|1
^^棧儲存結構可以採用順序儲存也可以採用鏈式結構實現。(V )
~~02|03|1|1
^^佇列的特性決定了其儲存結構只能採用順序儲存。( X )
~~02|03|1|1
^^佇列的儲存結構可以採用順序儲存也可以採用鏈式結構實現。( V )
~~02|03|1|1
^^佇列中元素的進出原則為先進先出,這種特性可用於處理圖的DFS遍歷。( )
~~02|03|1|1
^^迴圈佇列可以採取設定標誌性變數的辦法處理假溢位現象。( V )
~~02|03|1|1
^^棧的特性決定了其鏈式實現時採用不帶頭結點的連結串列較易實現。( V )
~~02|03|1|1
^^佇列的溢位現象有真溢位和假溢位兩種情況,對於真溢位可以採用迴圈佇列處理。( X )
~~02|03|1|1
^^對於不同的使用者,一個表結構既可以是棧,也可以是佇列,也可以是線性表。( V )
~~02|03|1|1
^^表示式求值是佇列應用的一個典型例子。( X )
~~02|03|1|1
^^棧和連結串列是兩種不同的資料結構。( X )
~~02|03|1|1
^^棧和佇列是一種非線性資料結構。( X )
~~02|03|1|1
^^兩個棧共享一片連續記憶體空間時,為提高記憶體利用率,減少溢位機會,應把兩個棧的棧底分別設在這片記憶體空間的兩端。( V )
~~02|03|1|1
^^佇列是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進後出型結構。( X )
~~02|03|1|1
^^一個棧的輸入序列是12345,則棧的輸出序列不可能是12345。( X )