一、選擇題(24分)
1.下面關於線性表的敘述錯誤的是()。
(a) 線性表採用順序儲存必須占用一片連續的儲存空間
(b) 線性表採用鏈式儲存不必占用一片連續的儲存空間
(c) 線性表採用鏈式儲存便於插入和刪除操作的實現
(d) 線性表採用順序儲存便於插入和刪除操作的實現
2.設哈夫曼樹中的葉子結點總數為m,若用二叉鍊錶作為儲存結構,則該哈夫曼樹中總共有( )個空指標域。
(a)2m-1 (b) 2m (c) 2m+1 (d) 4m
3.設順序迴圈佇列q[0:m-1]的頭指標和尾指標分別為f和r,頭指標f總是指向隊頭元素的前一位置,尾指標r總是指向隊尾元素的當前位置,則該迴圈佇列中的元素個數為( )。
(a)r-f (b) f-r (c) (r-f+m)%m (d) (f-r+m)%m
4.設某棵二叉樹的中序遍歷序列為abcd,前序遍歷序列為cabd,則後序遍歷該二叉樹得到序列為()。
(a)badc (b) bcda (c) cdab (d) cbda
5.設某完全無向圖中有n個頂點,則該完全無向圖中有( )條邊。
(a)n(n-1)/2 (b) n(n-1) (c) n2 (d) n2-1
6.設某棵二叉樹中有2000個結點,則該二叉樹的最小高度為( )。
(a)9 (b) 10 (c) 11 (d) 12
7.設某有向圖中有n個頂點,則該有向圖對應的鄰接表中有( )個表頭結點。
(a)n-1 (b) n (c) n+1 (d) 2n-1
8.設一組初始記錄關鍵字序列(5,2,6,3,8),以第乙個記錄關鍵字5為基準進行一趟快速排序的結果為( )。
(a)2,3,5,8,6 (b)3,2,5,8,6
(c)3,2,5,6,8 (d)2,3,6,5,8
二、填空題(24分)
1.為了能有效地應用hash查詢技術,必須解決的兩個問題是____________________和__________________________。
2.下面程式段的功能實現資料x進棧,要求在下劃線處填上正確的語句。
typedefstruct sqstack;
voidpush(sqstack &stack,int x)
if(stack.top==m-1) printf(「overflow」);
else
3.中序遍歷二叉排序樹所得到的序列是___________序列(填有序或無序)。
4.快速排序的最壞時間複雜度為___________,平均時間複雜度為__________。
5.設某棵二叉樹中度數為0的結點數為n0,度數為1的結點數為n1,則該二叉樹中度數為2的結點數為_________;若採用二叉鍊錶作為該二叉樹的儲存結構,則該二叉樹中共有_______個空指標域。
6.設某無向圖中頂點數和邊數分別為n和e,所有頂點的度數之和為d,則e=_______。
7.設一組初始記錄關鍵字序列為(55,63,44,38,75,80,31,56),則利用篩選法建立的初始堆為___________________________。
8. 已知一有向圖的鄰接表儲存結構如下:從頂點1出發,dfs遍歷的輸出序列是
,bfs遍歷的輸出序列是
三 應用題(36分)
1. 設一組初始記錄關鍵字序列為(45,80,48,40,22,78),則分別給出第4趟簡單選擇排序和第4趟直接插入排序後的結果。
2. 設指標變數p指向雙向鍊錶中結點a,指標變數q指向被插入結點b,要求給出在結點a的後面插入結點b的操作序列(設雙向鍊錶中結點的兩個指標域分別為llink和rlink)。
3. 設一組有序的記錄關鍵字序列為(13,18,24,35,47,50,62,83,90),查詢方法用二分查詢,要求計算出查詢關鍵字62時的比較次數並計算出查詢成功時的平均查詢長度。
4. 設一棵樹t中邊的集合為,要求用孩子兄弟表示法(二叉鍊錶)表示出該樹的儲存結構並將該樹轉化成對應的二叉樹。
5. 設有無向圖g,要求給出用普里姆演算法構造最小生成樹所走過的邊的集合。
6. 設有一組初始記錄關鍵字為(45,80,48,40,22,78),要求構造一棵二叉排序樹並給出構造過程。
四、演算法設計題(16分)
1. 設有一組初始記錄關鍵字序列(k1,k2,…,kn),要求設計乙個演算法能夠在o(n)的時間複雜度內將線性表劃分成兩部分,其中左半部分的每個關鍵字均小於ki,右半部分的每個關鍵字均大於等於ki。
2. 設有兩個集合a和集合b,要求設計生成集合c=a∩b的演算法,其中集合a、b和c用鏈式儲存結構表示。
參***
一、選擇題
1.d 2.b 3.c 4.a 5.a 6.c 7.b 8.c
二、填空題
1. 構造乙個好的hash函式,確定解決衝突的方法
2. stack.top++,stack.s[stack.top]=x
3. 有序
4. o(n2),o(nlog2n)
5. n0-1,2n0+n1
6. d/2
7. (31,38,54,56,75,80,55,63)
8. (1,3,4,5,2),(1,3,2,4,5)
三、應用題
1. (22,40,45,48,80,78),(40,45,48,80,22,78)
2.q->llink=p;q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;
3. 2,asl=91*1+2*2+3*4+4*2)=25/9
4. 樹的鏈式儲存結構略,二叉樹略
5.e=
6.略四、演算法設計題
1.設有一組初始記錄關鍵字序列(k1,k2,…,kn),要求設計乙個演算法能夠在o(n)的時間複雜度內將線性表劃分成兩部分,其中左半部分的每個關鍵字均小於ki,右半部分的每個關鍵字均大於等於ki。
void quickpass(int r, int s,int t)
r[i]=x;
}2. 設有兩個集合a和集合b,要求設計生成集合c=a∩b的演算法,其中集合a、b和c用鏈式儲存結構表示。
typedef struct node lklist;
void intersection(lklist*ha,lklist *hb,lklist *&hc)
}
資料結構複習題綱
最近把近期的部落格和生活中的一些瑣事進行了整理和歸納,從現在起,開始著手準備資料結構的複習了。同時做一些筆記與大家共同分享 進步!感謝大家的支援!記得點讚啦!第二章 鍊錶 第三章 棧和佇列 對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作 此外,乙個演算法還具有下列...
資料結構複習題(五)
一 選擇題 20分 1 資料的最小單位是 a 資料項 b 資料型別 c 資料元素 d 資料變數 2 設一組初始記錄關鍵字序列為 50,40,95,20,15,70,60,45 則以增量d 4的一趟希爾排序結束後前4條記錄關鍵字為 a 40,50,20,95 b 15,40,60,20 c 15,20...
資料結構 複習題索引
瘋狂a題的感覺還是不錯的,雖然自己不打acm,因為感覺太浪費時間了,人各有志,大學除了解題能力,大方向的解決問題的能力,處理人際關係,親密關係,培養好的生活習慣在我看來更加重要。雖然跟打不打acm沒什麼關係,但acm容易讓我更像生活在高三,每天三點一線,a了n多題,只為一場帶著些許運氣成分的比賽,正...