1. 經過以下棧運算後,x的值是( )。
initstack(s); push(s,'a'); push(s,'b');
pop(s,x); gettop(s,x);
a b. b c. 1 d. 0
2.迴圈佇列儲存在陣列a[0..m]中,則入隊時的操作為( )。
a.rear=rear+1
b. rear=(rear+1) mod(m-1)
c. rear=(rear+1)mod m
d. rear=(rear+1) mod(m+1)
3. 棧和佇列的共同點是( )。
a.都是先進先出 b.都是先進後出
c.只允許在端點處插入和刪除元素 d.沒有共同點3
4. 若用乙個大小為6的陣列來實現迴圈佇列,且當 rear 和 front 的值分別為 0 和 3。當從佇列中刪除乙個元素,再插入兩個元素後,rear 和 front 的值分別為:( )。
a.1 和 5 b.2 和 4
c.4 和 2 d.5 和 1
5. 程式填順序迴圈佇列的型別定義如下:
typedef int et;
typedef structqueue;
queue q;
佇列 q 是否「滿」的條件判斷為( )。
a.(q.front+1)==q.rear
b.q.front==(q.rear+1)
c.q.front=(q.rear+1)% q.size
d.(q.front+1) % q.size=(q.rear+1)% q.size
6. 若進棧序列為1,2,3,4,進棧過程中可以出棧,則( )不可能是乙個出棧序列。
a.3,4,2,1 b.2,4,3,1
c.1,4,2,3 d.3,2,1,4
7. 向順序儲存的迴圈佇列 q 中插入新元素的過程分為三步: ( )。
a.進行佇列是否空的判斷,存入新元素,移動隊尾指標
b.進行佇列是否滿的判斷,移動隊尾指標,存入新元素
c.進行佇列是否空的判斷,移動隊尾指標,存入新元素
d.進行佇列是否滿的判斷,存入新元素,移動隊尾指標
8. 關於棧和佇列,( )說法不妥。
a. 棧是後進先出表 b. 佇列是先進先出表
c. 遞迴函式在執行時用到棧 d. 佇列非常適用於表示式求值的算符優先法
9. 若用陣列s[0..m]作為兩個棧s1和s2的共同儲存結構,對任何乙個棧,只有當s全滿時才不能作入棧操作。為這兩個棧分配空間的最佳方案是( )。
a.s1的棧底位置為0,s2的棧底位置為m
b.s1的棧底位置為0,s2的棧底位置為m/2
c.s1的棧底位置為1,s2的棧底位置為m
d.s1的棧底位置為1,s2的棧底位置為m/2
1.下面的演算法是將乙個整數e壓入堆疊s,請在空格處填上適當的語句實現該操作。
typedef structsqstack;
int push(sqstack s,int e)
s.top= ;
s.stacksize= ;
} ;
return 1;
}2. 在表示式:6+5+3*7/(4+9/3-2)求值過程中,處理到2時刻,運算子棧的狀態為:(4分),運算元棧的內容為(4分)。
3. 遞呼叫時,處理引數及返回位址,要用一種稱為的資料結構。
4. 設迴圈佇列中陣列的下標範圍是1-n,其頭尾指標分別為f和r,則其元素個數為。
答案連線鏈結
資料結構 第三章 棧與佇列
3.1 棧 3.1.1 抽象資料型別棧的定義 棧是限定僅在表尾進行插入或刪除操作的線性表。因此,對棧來說,表尾端有其特殊含義,稱為棧頂。相反地,表頭端稱為棧底。棧是後進先出 lifo 的線性表。基本操作 top 返回棧頂元素 pop 彈出棧頂元素 push a 將元素a壓入棧 empty 判斷是否為...
資料結構 第三章 棧與佇列
定義 限定僅在表尾進行插入和刪除操作的線性表。即後進先出的線性表 last in first out 表尾即棧頂top,表頭即棧低bottom。儲存方式 順序棧 鏈棧 順序棧 一組位址連續的儲存單元,一次存放自棧低到棧頂的資料元素。結構 兩個指標top,base,乙個int size描述棧的大小 空...
第三章作業1 棧
1 1 通過對堆疊s操作 push s,1 push s,2 pop s push s,3 pop s pop s 輸出的序列為 123。2分 f 應是231 1 2若乙個棧的輸入序列為1,2,3,n,輸出序列的第乙個元素是i,則第j個輸出元素是j i 1。2分 f 解析 一串資料依次通過乙個棧,並...