資料結構複習題(五)

2021-08-26 13:29:30 字數 4154 閱讀 7583

一、選擇題(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,40,45 (d)45,40,15,20

3.設一組初始記錄關鍵字序列為(25,50,15,35,80,85,20,40,36,70),其中含有5個長度為2的有序子表,則用歸併排序的方法對該記錄關鍵字序列進行一趟歸併後的結果為( )。

(a) 15,25,35,50,20,40,80,85,36,70

(b) 15,25,35,50,80,20,85,40,70,36

(c) 15,25,35,50,80,85,20,36,40,70

(d) 15,25,35,50,80,20,36,40,70,85

4.函式substr(「datastructure」,5,9)的返回值為()。

(a)「structure」 (b) 「data」

(c)「astructur」 (d) 「datastructure」

5.設乙個有序的單鏈表中有n個結點,現要求插入乙個新結點後使得單鏈表仍然保持有序,則該操作的時間複雜度為( )。

(a)o(log2n) (b) o(1) (c) o(n2) (d) o(n)

6.設一棵m叉樹中度數為0的結點數為n0,度數為1的結點數為nl,……,度數為m的結點數為nm,則n0=( )。

(a)nl+n2+……+nm (b) l+n2+2n3+3n4+……+(m-1)nm

(c)n2+2n3+3n4+……+(m-1)nm (d)2nl+3n2+……+(m+1)nm

7.設有序表中有1000個元素,則用二分查詢查詢元素x最多需要比較( )次。

(a)25 (b) 10 (c) 7 (d) 1

8.設連通圖g中的邊集e=,則從頂點a出發可以得到一種深度優先遍歷的頂點序列為( )。

(a)abedfc (b) acfebd (c) aebdfc (d) aedfcb

9.設輸入序列是1、2、3、……、n,經過棧的作用後輸出序列的第乙個元素是n,則輸出序列中第i個輸出元素是()。

(a)n-i (b) n-1-i (c) n+1-i (d) 不能確定

10 設一組初始記錄關鍵字序列為(45,80,55,40,42,85),則以第乙個記錄關鍵字45為基準而得到一趟快速排序的結果是( )。

(a)40,42,45,55,80,83 (b) 42,40,45,80,85,88

(c)42,40,45,55,80,85 (d) 42,40,45,85,55,80

二、填空題(共20分)

1.設有乙個順序共享棧s[0:n-1],其中第乙個棧項指標top1的初值為-1,第二個棧頂指標top2的初值為n,則判斷共享棧滿的條件是____________________。

2.在圖的鄰接表中用順序儲存結構儲存表頭結點的優點是____________________。

3.設有乙個n階的下三角矩陣a,如果按照行的順序將下三角矩陣中的元素(包括對角線上元素)存放在n(n+1)個連續的儲存單元中,則a[i][j]與a[0][0]之間有_______個資料元素。

4.棧的插入和刪除只能在棧的棧頂進行,後進棧的元素必定先出棧,所以又把棧稱為__________表;佇列的插入和刪除運算分別在佇列的兩端進行,先進佇列的元素必定先出佇列,所以又把佇列稱為_________表。

5.設一棵完全二叉樹的順序儲存結構中儲存資料元素為abcdef,則該二叉樹的前序遍歷序列為___________,中序遍歷序列為___________,後序遍歷序列為___________。

6.設一棵完全二叉樹有128個結點,則該完全二叉樹的深度為________,有__________個葉子結點。

7.設有向圖g的儲存結構用鄰接矩陣a來表示,則a中第i行中所有非零元素個數之和等於頂點i的________,第i列中所有非零元素個數之和等於頂點i的__________。

8.設一組初始記錄關鍵字序列(k1,k2,……,kn)是堆,則對i=1,2,…,n/2而言滿足的條件為_______________________________。

9.下面程式段的功能是實現氣泡排序演算法,請在下劃線處填上正確的語句。

void bubble(int r[n])

for(i=1;i<=n-1; i++)

for(exchange=0,j=0; j<_____________>

if (r[j]>r[j+1])

if (exchange==0) return;

10. 下面程式段的功能是實現二分查詢演算法,請在下劃線處填上正確的語句。

struct record;

int bisearch(structrecord r[ ], int k)

int low=0,mid,high=n-1;

while(low<=high)

if(r[mid].key==k) return(mid+1); else if(____________)high=mid-1;else low=mid+1;

return(0);

三、應用題(32分)

1.設某棵二叉樹的中序遍歷序列為dbeac,前序遍歷序列為abdec,要求給出該二叉樹的的後序遍歷序列。

2.設無向圖g(如右圖所示),給出該圖的最小生成樹上邊的集合並計算最小生成樹各邊上的權值之和。

3.設一組初始記錄關鍵字序列為(15,17,18,22,35,51,60),要求計算出成功查詢時的平均查詢長度。

4.設雜湊表的長度為8,雜湊函式h(k)=k mod 7,初始記錄關鍵字序列為(25,31,8,27,13,68),要求分別計算出用線性探測法和鏈位址法作為解決衝突方法的平均查詢長度。

四、演算法設計題(28分)

1. 設計判斷兩個二叉樹是否相同的演算法。

2. 設計兩個有序單鏈表的合併排序演算法。

參***

一、選擇題

1.a 2.b 3.a 4.a 5.d

6.b 7.b 8.b 9.c 10.c

二、填空題

1.top1+1=top2

2.可以隨機訪問到任乙個頂點的簡單鍊錶

3.i(i+1)/2+j-1

4.filo,fifo

5.abdecf,dbeafc,debfca

6.8,64

7.出度,入度

8.ki

<=k2i&& ki

<=k2i+1

9.n-i,r[j+1]=r[j]

10. mid=(low+high)/2,r[mid].key>k

三、應用題

1.debca

2.e=,w=10

3.asl=(1*1+2*2+3*4)/7=17/7

4.asl1=7/6,asl2=4/3

四、演算法設計題

1.設計判斷兩個二叉樹是否相同的演算法。

typedefstruct node bitree;

intjudgebitree(bitree *bt1,bitree *bt2)

if (bt1==0 && bt2==0) return(1);

else if (bt1==0 || bt2==0||bt1->data!=bt2->data) return(0);

elsereturn(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,bt2->rchild));

2.設計兩個有序單鏈表的合併排序演算法。

voidmergelklist(lklist *ha,lklist *hb,lklist *&hc)

lklist *s=hc=0;

while(ha!=0 && hb!=0)

if(ha->datadata);ha=ha->next;}

else ;hb=hb->next;}

if(ha==0) s->next=hb; else s->next=ha;

資料結構複習題綱

最近把近期的部落格和生活中的一些瑣事進行了整理和歸納,從現在起,開始著手準備資料結構的複習了。同時做一些筆記與大家共同分享 進步!感謝大家的支援!記得點讚啦!第二章 鍊錶 第三章 棧和佇列 對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作 此外,乙個演算法還具有下列...

資料結構複習題(二)

一 選擇題 24分 1 下面關於線性表的敘述錯誤的是 a 線性表採用順序儲存必須占用一片連續的儲存空間 b 線性表採用鏈式儲存不必占用一片連續的儲存空間 c 線性表採用鏈式儲存便於插入和刪除操作的實現 d 線性表採用順序儲存便於插入和刪除操作的實現 2 設哈夫曼樹中的葉子結點總數為m,若用二叉鍊錶作...

資料結構 複習題索引

瘋狂a題的感覺還是不錯的,雖然自己不打acm,因為感覺太浪費時間了,人各有志,大學除了解題能力,大方向的解決問題的能力,處理人際關係,親密關係,培養好的生活習慣在我看來更加重要。雖然跟打不打acm沒什麼關係,但acm容易讓我更像生活在高三,每天三點一線,a了n多題,只為一場帶著些許運氣成分的比賽,正...