第一篇:數(shù)據(jù)結(jié)構(gòu)考試試題總結(jié)doc
數(shù)據(jù)結(jié)構(gòu)考試模擬題(單獨(dú)整理)
一、選擇題
1.以下結(jié)構(gòu)中邏輯結(jié)構(gòu)不是線性結(jié)構(gòu)的是()A 棧B 隊(duì)列 C串 D線索二叉樹
2.如下算法的最壞時間復(fù)雜度為()for(i=n-1;i>=1;--i)for(j=1;ja[j+1])a[j]與a[j+1]對換;其中n為正整數(shù)。
A 0(n)
B 0(nlogn)
C 0(n^2)D 0(n^3)
3.下列說法錯誤的是()
A采用順序存儲占用一片連續(xù)ide存儲空間,可隨機(jī)存取
B采用鏈?zhǔn)酱鎯υ谶M(jìn)行插入和刪除錯做是不需要移動元素,但只能順序訪問各元 C滿二叉樹采用順序存儲結(jié)構(gòu)會浪費(fèi)大量存儲時間 D3階B-樹中節(jié)點(diǎn)內(nèi)關(guān)鍵字的個數(shù)為1或者2
4.設(shè)指針變量p指向單鏈表節(jié)點(diǎn)A,則刪除節(jié)點(diǎn)A的后繼結(jié)點(diǎn)B需要的操作為()A
p->next=p->next->next B
p=p->next C
p=p->next->next D
p->next=p
5.設(shè)入棧序列為123,則可能的出棧序列不包括()A 123 B 132
C 213
D 312
6.某二叉樹有n各葉子節(jié)點(diǎn),且當(dāng)中不存在度為1的節(jié)點(diǎn),則該二叉樹中共有()A(n-1)/2
B(n+1)/2
C 2n-1
D 2n+1
7.對于一個具有n各頂點(diǎn)和e條邊的無向圖,若采用鄰接表存儲結(jié)構(gòu)進(jìn)行表示,則除去鏈表中表節(jié)點(diǎn)(弧節(jié)點(diǎn))的數(shù)目為()A e/2 B e
C 2e
D n+e
8.對于含n個頂點(diǎn)的帶權(quán)有向圖G,下列說法錯誤的是()A拓?fù)渑判蚩捎糜跈z查圖G中是否存在有向回路 B關(guān)鍵路徑是源點(diǎn)到匯點(diǎn)的最短路徑
C位于關(guān)鍵路徑上的任意活動的延期大都將影響整個工程的進(jìn)度 D只需執(zhí)行一次Floyd算法,便可求出任意一對頂點(diǎn)間的最短距離
9.以下關(guān)于這邊查找的說法錯誤的是()
A折半查找算法宜在有序順序表上實(shí)現(xiàn),而不宜在有序單鏈表上實(shí)現(xiàn) B折半查找的判定樹一定是二叉排序樹 C折半查找的判定樹一定是滿二叉樹 D折半查找的判定樹一定是平衡二叉樹
10.下列排序算法中時間復(fù)雜度不受數(shù)據(jù)初始狀態(tài)影響而恒為0(n logn)的是()A 直接插入排序
B 冒泡排序
C 歸并排序
D 快速排序
11.以下排序方法中穩(wěn)定的是()
A 希爾排序
B基數(shù)排序
C 堆排序
D快速排序
二、填空題
1.長度為n的有序順序表中進(jìn)行順序排序查找的時間復(fù)雜度為_________,折半查找的時間復(fù)雜度為__________;2. 雙向循環(huán)鏈表中結(jié)點(diǎn)的指針域?yàn)閜rior和next,一直指針變量p指向雙向循環(huán)鏈表某結(jié)點(diǎn)指向一新節(jié)點(diǎn),將s所致結(jié)點(diǎn)插入到p所指結(jié)點(diǎn)后面的語句序列s->next=->next:_____________:____________:p->next=s;3.順序棧S的棧底指針為S.base,棧頂指針為S.top,棧空的判定條件是________.4.設(shè)循環(huán)隊(duì)列Q分配有M個存儲單元,Q.front和Q.rear分別為隊(duì)投緣蘇下表和隊(duì)尾元素下標(biāo),則循環(huán)隊(duì)列隊(duì)滿的判定條件是_____________;5.已知n*n階上三角矩陣A,矩陣元素的行、列下標(biāo)為1……n,將其上三角元素逐行存儲于一維數(shù)組S中(從0號單元開始存儲),則對角線元素aii在數(shù)組S自己拍賣會對應(yīng)元素的下標(biāo)為____________;6對于下圖所示的樹,其對應(yīng)的二叉樹所含葉節(jié)點(diǎn)數(shù)為________;
7.設(shè)權(quán)值集合W=(15,3,2,6,9),據(jù)此所得Huffman數(shù)的帶權(quán)路徑長度為___________;8.有向圖G中邊的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},則該圖的一個拓?fù)湫蛄袨開____;9.設(shè)一組記錄的關(guān)鍵字序列為(34,76,45,18,26,54,92),則由這組記錄關(guān)鍵字生成的二叉排序樹的深度為_________; 補(bǔ)全算法:輸入十進(jìn)制整數(shù)n,將其轉(zhuǎn)換為八進(jìn)制整數(shù)
Void conversion(){ Scanf(“%d”,n);InitStack(S);While(n!=0){ ________;n=n/8;} }
三、應(yīng)用題
1.設(shè)二叉樹線序序列為ABDEFCGHI,中序序列為DBFEAGHCI,畫出該二叉樹,并給出后序序列
2.圖的鄰接矩陣如下所示,分別畫出出自頂點(diǎn)A出發(fā)進(jìn)行遍歷所得的深度優(yōu)先生成樹和廣度優(yōu)先生成樹,假設(shè)鄰接點(diǎn)按由小到大的順序排列
3設(shè)一組初始記錄關(guān)鍵字集合為(25,17,15,27,32,68),散列表的長度為7,散列函數(shù)H(k)=k mod 7,要求分別用線性探測和連地址法作為解決沖突的方法構(gòu)造哈希表,并求平均查找長度。
4設(shè)初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),現(xiàn)對其由小到大進(jìn)行排序,寫出快速排序時以20為樞軸進(jìn)行一趟快速排序后的結(jié)果:并畫出堆排序時初始大頂堆對應(yīng)的二叉樹。
四、算法設(shè)計(jì)題 要求:(1)用自然語言說明所采用算法的思想
(2)給出每個算法所設(shè)計(jì)的存儲結(jié)構(gòu)定義,并作必要的注釋或說明;(3)用C語言或偽代碼寫出對應(yīng)的算法程序,并做必要的注釋。
1、二叉樹采用二叉鏈表存儲結(jié)構(gòu),設(shè)計(jì)算法統(tǒng)計(jì)二叉樹的深度。
2、已知集合A與集合B中的元素分別以遞增的順序結(jié)構(gòu)在但聯(lián)保La和Lb中,求A U B 并將結(jié)果存入單鏈表Lc中。要求Lc中的元素也遞增排序,且個鏈表均帶頭結(jié)點(diǎn)。
ps:根據(jù)勇哥的photos整理,部分地方有紕漏,請指出并上傳修訂版
第二篇:數(shù)據(jù)結(jié)構(gòu)試題及答案
數(shù)據(jù)結(jié)構(gòu)試卷
(二)一、選擇題(24分)1.下面關(guān)于線性表的敘述錯誤的是()。
(A)線性表采用順序存儲必須占用一片連續(xù)的存儲空間
(B)線性表采用鏈?zhǔn)酱鎯Σ槐卣加靡黄B續(xù)的存儲空間(C)線性表采用鏈?zhǔn)酱鎯Ρ阌诓迦牒蛣h除操作的實(shí)現(xiàn)(D)線性表采用順序存儲便于插入和刪除操作的實(shí)現(xiàn)
2.設(shè)哈夫曼樹中的葉子結(jié)點(diǎn)總數(shù)為m,若用二叉鏈表作為存儲結(jié)構(gòu),則該哈夫曼樹中總共有()個空指針域。
(A)2m-1(B)2m(C)2m+1(D)4m 3.設(shè)順序循環(huán)隊(duì)列Q[0:M-1]的頭指針和尾指針分別為F和R,頭指針F總是指向隊(duì)頭元素的前一位置,尾指針R總是指向隊(duì)尾元素的當(dāng)前位置,則該循環(huán)隊(duì)列中的元素個數(shù)為()。
(A)R-F(B)F-R(C)(R-F+M)%M(D)(F-R+M)%M 4.設(shè)某棵二叉樹的中序遍歷序列為ABCD,前序遍歷序列為CABD,則后序遍歷該二叉樹得到序列為()。
(A)BADC(B)BCDA(C)CDAB(D)CBDA 5.設(shè)某完全無向圖中有n個頂點(diǎn),則該完全無向圖中有()條邊。
(A)n(n-1)/2(B)n(n-1)(C)n
2(D)n2-1 6.設(shè)某棵二叉樹中有2000個結(jié)點(diǎn),則該二叉樹的最小高度為()。
(A)9(B)10(C)11(D)12 7.設(shè)某有向圖中有n個頂點(diǎn),則該有向圖對應(yīng)的鄰接表中有()個表頭結(jié)點(diǎn)。
(A)n-1(B)n(C)n+1(D)2n-1 8.設(shè)一組初始記錄關(guān)鍵字序列(5,2,6,3,8),以第一個記錄關(guān)鍵字5為基準(zhǔn)進(jìn)行一趟快速排序的結(jié)果為()。
(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.1.為了能有效地應(yīng)用HASH查找技術(shù),必須解決的兩個問題是____________________和__________________________。
2.2.下面程序段的功能實(shí)現(xiàn)數(shù)據(jù)x進(jìn)棧,要求在下劃線處填上正確的語句。
typedef struct {int s[100];int top;} sqstack;void push(sqstack &stack,int x){ if(stack.top==m-1)printf(“overflow”);
else {____________________;_________________;} } 3.3.中序遍歷二叉排序樹所得到的序列是___________序列(填有序或無序)。4.4.快速排序的最壞時間復(fù)雜度為___________,平均時間復(fù)雜度為__________。5.5.設(shè)某棵二叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為N1,則該二叉樹中度數(shù)為2的結(jié)點(diǎn)數(shù)為_________;若采用二叉鏈表作為該二叉樹的存儲結(jié)構(gòu),則該二叉樹中共有_______個空指針域。
6.6.設(shè)某無向圖中頂點(diǎn)數(shù)和邊數(shù)分別為n和e,所有頂點(diǎn)的度數(shù)之和為d,則e=_______。
7.7.設(shè)一組初始記錄關(guān)鍵字序列為(55,63,44,38,75,80,31,56),則利用篩選法建立的初始堆為___________________________。
v1??3??2??4v2??1??3v3??1??4??28.8.設(shè)某無向圖G的鄰接表為v4??1??3,則從頂點(diǎn)V1開始的深度優(yōu)先遍歷序列為___________;廣度優(yōu)先遍歷序列為____________。
三、應(yīng)用題(36分)1. 1. 設(shè)一組初始記錄關(guān)鍵字序列為(45,80,48,40,22,78),則分別給出第4趟簡單選擇排序和第4趟直接插入排序后的結(jié)果。
2. 2. 設(shè)指針變量p指向雙向鏈表中結(jié)點(diǎn)A,指針變量q指向被插入結(jié)點(diǎn)B,要求給出在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)B的操作序列(設(shè)雙向鏈表中結(jié)點(diǎn)的兩個指針域分別為llink和rlink)。
3. 3. 設(shè)一組有序的記錄關(guān)鍵字序列為(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求計(jì)算出查找關(guān)鍵字62時的比較次數(shù)并計(jì)算出查找成功時的平均查找長度。
4. 4. 設(shè)一棵樹T中邊的集合為{(A,B),(A,C),(A,D),(B,E),(C,F(xiàn)),(C,G)},要求用孩子兄弟表示法(二叉鏈表)表示出該樹的存儲結(jié)構(gòu)并將該樹轉(zhuǎn)化成對應(yīng)的二叉樹。5. 5. 設(shè)有無向圖G(如右圖所示),要求給出用普里姆算法構(gòu)造最小生成樹所走過的邊的集合。
6. 6. 設(shè)有一組初始記錄關(guān)鍵字為(45,80,48,40,22,78),要求構(gòu)造一棵二叉排序樹并給出構(gòu)造過程。
數(shù)據(jù)結(jié)構(gòu)試卷
(二)參考答案
一、選擇題 1.D 2.B 3.C 4.A 5.A 6.C 7.B 8.C
二、填空題
1.1.構(gòu)造一個好的HASH函數(shù),確定解決沖突的方法 2.2.stack.top++,stack.s[stack.top]=x 3.3.有序
4.4.O(n2),O(nlog2n)5.5.N0-1,2N0+N1 6.6.d/2 7.7.(31,38,54,56,75,80,55,63)8.8.(1,3,4,2),(1,3,2,4)
三、應(yīng)用題
1.1.(22,40,45,48,80,78),(40,45,48,80,22,78)2.2.q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q;3.3.2,ASL=91*1+2*2+3*4+4*2)=25/9 4.4.樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)略,二叉樹略
5.5.E={(1,3),(1,2),(3,5),(5,6),(6,4)} 6.6.略
數(shù)據(jù)結(jié)構(gòu)試卷
(三)一、選擇題(30分)1.設(shè)某數(shù)據(jù)結(jié)構(gòu)的二元組形式表示為A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>},則數(shù)據(jù)結(jié)構(gòu)A是()。
(A)線性結(jié)構(gòu)(B)樹型結(jié)構(gòu)(C)物理結(jié)構(gòu)(D)圖型結(jié)構(gòu) 2.下面程序的時間復(fù)雜為()
for(i=1,s=0; i<=n; i++){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}(A)O(n)(B)O(n2)(C)O(n3)(D)O(n4)3.設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,若刪除單鏈表中結(jié)點(diǎn)A,則需要修改指針的操作序列為()。
(A)q=p->next;p->data=q->data;p->next=q->next;free(q);(B)q=p->next;q->data=p->data;p->next=q->next;free(q);
(C)q=p->next;p->next=q->next;free(q);
(D)q=p->next;p->data=q->data;free(q);
4.設(shè)有n個待排序的記錄關(guān)鍵字,則在堆排序中需要()個輔助記錄單元。
(A)1(B)n(C)nlog2n(D)n2
5.設(shè)一組初始關(guān)鍵字記錄關(guān)鍵字為(20,15,14,18,21,36,40,10),則以20為基準(zhǔn)記錄的一趟快速排序結(jié)束后的結(jié)果為()。(A)10,15,14,18,20,36,40,21(B)10,15,14,18,20,40,36,21(C)10,15,14,20,18,40,36,2l(D)15,10,14,18,20,36,40,21 6.設(shè)二叉排序樹中有n個結(jié)點(diǎn),則在二叉排序樹的平均平均查找長度為()。(A)O(1)(B)O(log2n)(C)(D)O(n)7.設(shè)無向圖G中有n個頂點(diǎn)e條邊,則其對應(yīng)的鄰接表中的表頭結(jié)點(diǎn)和表結(jié)點(diǎn)的個數(shù)分別為()。
(A)n,e(B)e,n(C)2n,e(D)n,2e 8.設(shè)某強(qiáng)連通圖中有n個頂點(diǎn),則該強(qiáng)連通圖中至少有()條邊。
(A)n(n-1)(B)n+1(C)n(D)n(n+1)9.設(shè)有5000個待排序的記錄關(guān)鍵字,如果需要用最快的方法選出其中最小的10個記錄關(guān)鍵字,則用下列()方法可以達(dá)到此目的。
(A)快速排序(B)堆排序(C)歸并排序(D)插入排序 10.下列四種排序中()的空間復(fù)雜度最大。
(A)插入排序(B)冒泡排序(C)堆排序(D)歸并排序
二、填空殖(48分,其中最后兩小題各6分)1.1.數(shù)據(jù)的物理結(jié)構(gòu)主要包括_____________和______________兩種情況。
2.2.設(shè)一棵完全二叉樹中有500個結(jié)點(diǎn),則該二叉樹的深度為__________;若用二叉鏈表作為該完全二叉樹的存儲結(jié)構(gòu),則共有___________個空指針域。
3.3.設(shè)輸入序列為1、2、3,則經(jīng)過棧的作用后可以得到___________種不同的輸出序列。
4.4.設(shè)有向圖G用鄰接矩陣A[n][n]作為存儲結(jié)構(gòu),則該鄰接矩陣中第i行上所有元素之和等于頂點(diǎn)i的________,第i列上所有元素之和等于頂點(diǎn)i的________。
5.5.設(shè)哈夫曼樹中共有n個結(jié)點(diǎn),則該哈夫曼樹中有________個度數(shù)為1的結(jié)點(diǎn)。6.6.設(shè)有向圖G中有n個頂點(diǎn)e條有向邊,所有的頂點(diǎn)入度數(shù)之和為d,則e和d的關(guān)系為_________。
7.7.__________遍歷二叉排序樹中的結(jié)點(diǎn)可以得到一個遞增的關(guān)鍵字序列(填先序、中序或后序)。
8.8.設(shè)查找表中有100個元素,如果用二分法查找方法查找數(shù)據(jù)元素X,則最多需要比較________次就可以斷定數(shù)據(jù)元素X是否在查找表中。
9.9.不論是順序存儲結(jié)構(gòu)的棧還是鏈?zhǔn)酱鎯Y(jié)構(gòu)的棧,其入棧和出棧操作的時間復(fù)雜度均為____________。
10.10.設(shè)有n個結(jié)點(diǎn)的完全二叉樹,如果按照從自上到下、從左到右從1開始順序編號,則第i個結(jié)點(diǎn)的雙親結(jié)點(diǎn)編號為____________,右孩子結(jié)點(diǎn)的編號為___________。11.11.設(shè)一組初始記錄關(guān)鍵字為(72,73,71,23,94,16,5),則以記錄關(guān)鍵字72為基準(zhǔn)的一趟快速排序結(jié)果為___________________________。
12.12.設(shè)有向圖G中有向邊的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},則該圖的一種拓?fù)湫蛄袨開___________________。
13.13.下列算法實(shí)現(xiàn)在順序散列表中查找值為x的關(guān)鍵字,請?jiān)谙聞澗€處填上正確的語句。
struct record{int key;int others;};int hashsqsearch(struct record hashtable[ ],int k){ int i,j;j=i=k % p;while(hashtable[j].key!=k&&hashtable[j].flag!=0){j=(____)%m;if(i==j)return(-1);}
if(_______________________)return(j);else return(-1);} 14.14.下列算法實(shí)現(xiàn)在二叉排序樹上查找關(guān)鍵值k,請?jiān)谙聞澗€處填上正確的語句。
typedef struct node{int key;struct node *lchild;struct node *rchild;}bitree;bitree *bstsearch(bitree *t, int k){
if(t==0)return(0);else while(t!=0)if(t->key==k)_____________;else if(t->key>k)t=t->lchild;else_____________;}
數(shù)據(jù)結(jié)構(gòu)試卷
(三)參考答案
一、選擇題
1.B 2.B 3.A 4.A 5.A 6.B 7.D 8.C 9.B 10.D 第3小題分析:首先用指針變量q指向結(jié)點(diǎn)A的后繼結(jié)點(diǎn)B,然后將結(jié)點(diǎn)B的值復(fù)制到結(jié)點(diǎn)A中,最后刪除結(jié)點(diǎn)B。
第9小題分析:9快速排序、歸并排序和插入排序必須等到整個排序結(jié)束后才能夠求出最小的10個數(shù),而堆排序只需要在初始堆的基礎(chǔ)上再進(jìn)行10次篩選即可,每次篩選的時間復(fù)雜度為O(log2n)。
二、填空題
1.1.順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu) 2.2.9,501 3.3.5 4.4.出度,入度 5.5.0 6.6.e=d 7.7.中序 8.8.7 9.9.O(1)10.10.i/2,2i+1 11.11.(5,16,71,23,72,94,73)12.12.(1,4,3,2)13.13.j+1,hashtable[j].key==k 14.14.return(t),t=t->rchild 第8小題分析:二分查找的過程可以用一棵二叉樹來描述,該二叉樹稱為二叉判定樹。在有序表上進(jìn)行二分查找時的查找長度不超過二叉判定樹的高度1+log2n。
}
數(shù)據(jù)結(jié)構(gòu)試卷
(四)一、選擇題(30分)1.設(shè)一維數(shù)組中有n個數(shù)組元素,則讀取第i個數(shù)組元素的平均時間復(fù)雜度為()。(A)O(n)(B)O(nlog2n)(C)O(1)(D)O(n)2.設(shè)一棵二叉樹的深度為k,則該二叉樹中最多有()個結(jié)點(diǎn)。
(A)2k-1(B)2k(C)2k-1(D)2k-1 3.設(shè)某無向圖中有n個頂點(diǎn)e條邊,則該無向圖中所有頂點(diǎn)的入度之和為()。
(A)n(B)e(C)2n(D)2e 4.在二叉排序樹中插入一個結(jié)點(diǎn)的時間復(fù)雜度為()。
(A)O(1)(B)O(n)(C)O(log2n)(D)O(n2)5.設(shè)某有向圖的鄰接表中有n個表頭結(jié)點(diǎn)和m個表結(jié)點(diǎn),則該圖中有()條有向邊。
(A)n(B)n-1(C)m(D)m-1 6.設(shè)一組初始記錄關(guān)鍵字序列為(345,253,674,924,627),則用基數(shù)排序需要進(jìn)行()趟的分配和回收才能使得初始關(guān)鍵字序列變成有序序列。
(A)3(B)4(C)5(D)8 7.設(shè)用鏈表作為棧的存儲結(jié)構(gòu)則退棧操作()。
(A)必須判別棧是否為滿(B)必須判別棧是否為空
(C)判別棧元素的類型(D)對棧不作任何判別 8.下列四種排序中()的空間復(fù)雜度最大。
(A)快速排序(B)冒泡排序(C)希爾排序(D)堆
9.設(shè)某二叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為Nl,度數(shù)為2的結(jié)點(diǎn)數(shù)為N2,則下列等式成立的是()。
(A)N0=N1+1(B)N0=Nl+N2(C)N0=N2+1(D)N0=2N1+l 10.設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。
(A)log2n+1(B)log2n-1(C)log2n(D)log2(n+1)
二、填空題(42分)1. 1. 設(shè)有n個無序的記錄關(guān)鍵字,則直接插入排序的時間復(fù)雜度為________,快速排序的平均時間復(fù)雜度為_________。
2. 2. 設(shè)指針變量p指向雙向循環(huán)鏈表中的結(jié)點(diǎn)X,則刪除結(jié)點(diǎn)X需要執(zhí)行的語句序列為_________________________________________________________(設(shè)結(jié)點(diǎn)中的兩個指針域分別為llink和rlink)。3. 3. 根據(jù)初始關(guān)鍵字序列(19,22,01,38,10)建立的二叉排序樹的高度為____________。4. 4. 深度為k的完全二叉樹中最少有____________個結(jié)點(diǎn)。5. 5. 設(shè)初始記錄關(guān)鍵字序列為(K1,K2,…,Kn),則用篩選法思想建堆必須從第______個元素開始進(jìn)行篩選。
6. 6. 設(shè)哈夫曼樹中共有99個結(jié)點(diǎn),則該樹中有_________個葉子結(jié)點(diǎn);若采用二叉鏈表作為存儲結(jié)構(gòu),則該樹中有_____個空指針域。
7. 7. 設(shè)有一個順序循環(huán)隊(duì)列中有M個存儲單元,則該循環(huán)隊(duì)列中最多能夠存儲________個隊(duì)列元素;當(dāng)前實(shí)際存儲________________個隊(duì)列元素(設(shè)頭指針F指向當(dāng)前隊(duì)頭元素的前一個位置,尾指針指向當(dāng)前隊(duì)尾元素的位置)。
8. 8. 設(shè)順序線性表中有n個數(shù)據(jù)元素,則第i個位置上插入一個數(shù)據(jù)元素需要移動表中_______個數(shù)據(jù)元素;刪除第i個位置上的數(shù)據(jù)元素需要移動表中_______個元素。9. 9. 設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則以20為中軸的一趟快速排序結(jié)果為______________________________。
10.10.設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則根據(jù)這些初始關(guān)鍵字序列建成的初始堆為________________________。
11.11.設(shè)某無向圖G中有n個頂點(diǎn),用鄰接矩陣A作為該圖的存儲結(jié)構(gòu),則頂點(diǎn)i和頂點(diǎn)j互為鄰接點(diǎn)的條件是______________________。
12.12.設(shè)無向圖對應(yīng)的鄰接矩陣為A,則A中第i上非0元素的個數(shù)_________第i列上非0元素的個數(shù)(填等于,大于或小于)。
13.13.設(shè)前序遍歷某二叉樹的序列為ABCD,中序遍歷該二叉樹的序列為BADC,則后序遍歷該二叉樹的序列為_____________。
14.14.設(shè)散列函數(shù)H(k)=k mod p,解決沖突的方法為鏈地址法。要求在下列算法劃線處填上正確的語句完成在散列表hashtalbe中查找關(guān)鍵字值等于k的結(jié)點(diǎn),成功時返回指向關(guān)鍵字的指針,不成功時返回標(biāo)志0。
typedef struct node {int key;struct node *next;} lklist;void createlkhash(lklist *hashtable[ ]){ int i,k;lklist *s;for(i=0;i
數(shù)據(jù)結(jié)構(gòu)試卷
(四)參考答案
一、選擇題
1.C 2.D 3.D 4.B 5.C 6.A 7.B 8.A 9.C 10.A
二、填空題
1.1.O(n2),O(nlog2n)2.2.p>llink->rlink=p->rlink;p->rlink->llink=p->rlink 3.3.3 4.4.2k-1 5.5.n/2 6.6.50,51 7.7.m-1,(R-F+M)%M 8.8.n+1-i,n-i 9.9.(19,18,16,20,30,22)10.10.(16,18,19,20,32,22)11.11.A[i][j]=1 12.12.等于 13.13.BDCA 14.14.hashtable[i]=0,hashtable[k]=s
數(shù)據(jù)結(jié)構(gòu)試卷
(五)一、選擇題(30分)
1.?dāng)?shù)據(jù)的最小單位是()。
(A)數(shù)據(jù)項(xiàng)(B)數(shù)據(jù)類型(C)數(shù)據(jù)元素(D)數(shù)據(jù)變量
2.設(shè)一組初始記錄關(guān)鍵字序列為(50,40,95,20,15,70,60,45),則以增量d=4的一趟希爾排序結(jié)束后前4條記錄關(guān)鍵字為()。
(A)40,50,20,95(B)15,40,60,20(C)15,20,40,45(D)45,40,15,20 3.設(shè)一組初始記錄關(guān)鍵字序列為(25,50,15,35,80,85,20,40,36,70),其中含有5個長度為2的有序子表,則用歸并排序的方法對該記錄關(guān)鍵字序列進(jìn)行一趟歸并后的結(jié)果為()。
(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.函數(shù)substr(“DATASTRUCTURE”,5,9)的返回值為()。
(A)“STRUCTURE”(B)“DATA”
(C)“ASTRUCTUR”(D)“DATASTRUCTURE” 5.設(shè)一個有序的單鏈表中有n個結(jié)點(diǎn),現(xiàn)要求插入一個新結(jié)點(diǎn)后使得單鏈表仍然保持有序,則該操作的時間復(fù)雜度為()。
(A)O(log2n)(B)O(1)(C)O(n2)(D)O(n)6.設(shè)一棵m叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為Nl,……,度數(shù)為m的結(jié)點(diǎn)數(shù)為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.設(shè)有序表中有1000個元素,則用二分查找查找元素X最多需要比較()次。
(A)25(B)10(C)7(D)1 8.設(shè)連通圖G中的邊集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點(diǎn)a出發(fā)可以得到一種深度優(yōu)先遍歷的頂點(diǎn)序列為()。
(A)abedfc(B)acfebd(C)aebdfc(D)aedfcb 9.設(shè)輸入序列是1、2、3、……、n,經(jīng)過棧的作用后輸出序列的第一個元素是n,則輸出序列中第i個輸出元素是()。
(A)n-i(B)n-1-i(C)n+1-i(D)不能確定 設(shè)一組初始記錄關(guān)鍵字序列為(45,80,55,40,42,85),則以第一個記錄關(guān)鍵字45為基準(zhǔn)而得到一趟快速排序的結(jié)果是()。
(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
二、填空題(共30分)1.1.設(shè)有一個順序共享?xiàng)[0:n-1],其中第一個棧項(xiàng)指針top1的初值為-1,第二個棧頂指針top2的初值為n,則判斷共享?xiàng)M的條件是____________________。
2.2.在圖的鄰接表中用順序存儲結(jié)構(gòu)存儲表頭結(jié)點(diǎn)的優(yōu)點(diǎn)是____________________。
3.3.設(shè)有一個n階的下三角矩陣A,如果按照行的順序?qū)⑾氯蔷仃囍械脑兀ò▽蔷€上元素)存放在n(n+1)個連續(xù)的存儲單元中,則A[i][j]與A[0][0]之間有_______個數(shù)據(jù)元素。
4.4.棧的插入和刪除只能在棧的棧頂進(jìn)行,后進(jìn)棧的元素必定先出棧,所以又把棧稱為__________表;隊(duì)列的插入和刪除運(yùn)算分別在隊(duì)列的兩端進(jìn)行,先進(jìn)隊(duì)列的元素必定先出隊(duì)列,所以又把隊(duì)列稱為_________表。
5.5.設(shè)一棵完全二叉樹的順序存儲結(jié)構(gòu)中存儲數(shù)據(jù)元素為ABCDEF,則該二叉樹的前序遍歷序列為___________,中序遍歷序列為___________,后序遍歷序列為___________。
6.6.設(shè)一棵完全二叉樹有128個結(jié)點(diǎn),則該完全二叉樹的深度為________,有__________個葉子結(jié)點(diǎn)。
7.7.設(shè)有向圖G的存儲結(jié)構(gòu)用鄰接矩陣A來表示,則A中第i行中所有非零元素個數(shù)之和等于頂點(diǎn)i的________,第i列中所有非零元素個數(shù)之和等于頂點(diǎn)i的__________。
8.8.設(shè)一組初始記錄關(guān)鍵字序列(k1,k2,……,kn)是堆,則對i=1,2,…,n/2而言滿足的條件為_______________________________。
9.9.下面程序段的功能是實(shí)現(xiàn)冒泡排序算法,請?jiān)谙聞澗€處填上正確的語句。void bubble(int r[n]){ for(i=1;i<=n-1;i++){ for(exchange=0,j=0;j<_____________;j++)
if(r[j]>r[j+1]){temp=r[j+1];______________;r[j]=temp;exchange=1;} if(exchange==0)return; } } 10.10.下面程序段的功能是實(shí)現(xiàn)二分查找算法,請?jiān)谙聞澗€處填上正確的語句。struct record{int key;int others;};int bisearch(struct record 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);}
三、應(yīng)用題(24分)
1.1.設(shè)某棵二叉樹的中序遍歷序列為DBEAC,前序遍歷序列為ABDEC,要求給出該二叉樹的的后序遍歷序列。2.2.設(shè)無向圖G(如右圖所示),給出該圖的最小生成樹上邊的集合并計(jì)算最小生成樹各邊上的權(quán)值之和。
3.3.設(shè)一組初始記錄關(guān)鍵字序列為(15,17,18,22,35,51,60),要求計(jì)算出成功查找時的平均查找長度。
4.4.設(shè)散列表的長度為8,散列函數(shù)H(k)=k mod 7,初始記錄關(guān)鍵字序列為(25,31,8,27,13,68),要求分別計(jì)算出用線性探測法和鏈地址法作為解決沖突方法的平均查找長度。
數(shù)據(jù)結(jié)構(gòu)試卷
(五)參考答案
一、選擇題 1.A 2.B 3.A 4.A 5.D 6.B 7.B 8.B 9.C 10.C
二、填空題
1.1.top1+1=top2 2.2.可以隨機(jī)訪問到任一個頂點(diǎn)的簡單鏈表
3.3.i(i+1)/2+j-1 4.4.FILO,F(xiàn)IFO 5.5.ABDECF,DBEAFC,DEBFCA 6.6.8,64 7.7.出度,入度
8.8.ki<=k2i && ki<=k2i+1 9.9.n-i,r[j+1]=r[j] 10.10.mid=(low+high)/2,r[mid].key>k
三、應(yīng)用題
1.1.DEBCA 2.2.E={(1,5),(5,2),(5,3),(3,4)},W=10 3.3.ASL=(1*1+2*2+3*4)/7=17/7 4.4.ASL1=7/6,ASL2=4/3
數(shù)據(jù)結(jié)構(gòu)試卷
(六)一、選擇題(30分)1. 設(shè)一組權(quán)值集合W={2,3,4,5,6},則由該權(quán)值集合構(gòu)造的哈夫曼樹中帶權(quán)路徑長度之和為()。
(A)20(B)30(C)40(D)45 2.執(zhí)行一趟快速排序能夠得到的序列是()。
(A)[41,12,34,45,27] 55 [72,63](B)[45,34,12,41] 55 [72,63,27](C)[63,12,34,45,27] 55 [41,72](D)[12,27,45,41] 55 [34,63,72] 3.設(shè)一條單鏈表的頭指針變量為head且該鏈表沒有頭結(jié)點(diǎn),則其判空條件是()。(A)head==0(B)head->next==0(C)head->next==head(D)head!=0 4.時間復(fù)雜度不受數(shù)據(jù)初始狀態(tài)影響而恒為O(nlog2n)的是()。
(A)堆排序(B)冒泡排序(C)希爾排序(D)快速排序
5.設(shè)二叉樹的先序遍歷序列和后序遍歷序列正好相反,則該二叉樹滿足的條件是()。
(A)空或只有一個結(jié)點(diǎn)(B)高度等于其結(jié)點(diǎn)數(shù)
(C)任一結(jié)點(diǎn)無左孩子(D)任一結(jié)點(diǎn)無右孩子
6.一趟排序結(jié)束后不一定能夠選出一個元素放在其最終位置上的是()。
(A)堆排序(B)冒泡排序(C)快速排序(D)希爾排序 7.設(shè)某棵三叉樹中有40個結(jié)點(diǎn),則該三叉樹的最小高度為()。
(A)3(B)4(C)5(D)6 8.順序查找不論在順序線性表中還是在鏈?zhǔn)骄€性表中的時間復(fù)雜度為()。
21/2(A)O(n)(B)O(n)(C)O(n)(D)O(1og2n)9.二路歸并排序的時間復(fù)雜度為()。(A)O(n)(B)O(n)(C)O(nlog2n)(D)O(1og2n)10.深度為k的完全二叉樹中最少有()個結(jié)點(diǎn)。
(A)2k-1-1(B)2k-1(C)2k-1+1(D)2k-1 11.設(shè)指針變量front表示鏈?zhǔn)疥?duì)列的隊(duì)頭指針,指針變量rear表示鏈?zhǔn)疥?duì)列的隊(duì)尾指針,指針變量s指向?qū)⒁腙?duì)列的結(jié)點(diǎn)X,則入隊(duì)列的操作序列為()。
(A)front->next=s;front=s;(B)s->next=rear;rear=s;
(C)rear->next=s;rear=s;(D)s->next=front;front=s;
12.設(shè)某無向圖中有n個頂點(diǎn)e條邊,則建立該圖鄰接表的時間復(fù)雜度為()。(A)O(n+e)(B)O(n)(C)O(ne)(D)O(n)13.設(shè)某哈夫曼樹中有199個結(jié)點(diǎn),則該哈夫曼樹中有()個葉子結(jié)點(diǎn)。
(A)99(B)100(C)101(D)102 14.設(shè)二叉排序樹上有n個結(jié)點(diǎn),則在二叉排序樹上查找結(jié)點(diǎn)的平均時間復(fù)雜度為()。(A)O(n)(B)O(n)(C)O(nlog2n)(D)O(1og2n)15.設(shè)用鄰接矩陣A表示有向圖G的存儲結(jié)構(gòu),則有向圖G中頂點(diǎn)i的入度為()。
(A)第i行非0元素的個數(shù)之和(B)第i列非0元素的個數(shù)之和
(C)第i行0元素的個數(shù)之和(D)第i列0元素的個數(shù)之和
二、判斷題(20分)1.調(diào)用一次深度優(yōu)先遍歷可以訪問到圖中的所有頂點(diǎn)。()
2.分塊查找的平均查找長度不僅與索引表的長度有關(guān),而且與塊的長度有關(guān)。()3.冒泡排序在初始關(guān)鍵字序列為逆序的情況下執(zhí)行的交換次數(shù)最多。()4.滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹。()
5.設(shè)一棵二叉樹的先序序列和后序序列,則能夠唯一確定出該二叉樹的形狀。()6.層次遍歷初始堆可以得到一個有序的序列。()
7.設(shè)一棵樹T可以轉(zhuǎn)化成二叉樹BT,則二叉樹BT中一定沒有右子樹。()8.線性表的順序存儲結(jié)構(gòu)比鏈?zhǔn)酱鎯Y(jié)構(gòu)更好。()
9.中序遍歷二叉排序樹可以得到一個有序的序列。()10.快速排序是排序算法中平均性能最好的一種排序。()
三、填空題(30分)1.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的時間復(fù)雜度為_________。
2.設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的新結(jié)點(diǎn)X,則進(jìn)行插入操作的語句序列為__________________________(設(shè)結(jié)點(diǎn)的指針域?yàn)閚ext)。3.設(shè)有向圖G的二元組形式表示為G =(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},則給出該圖的一種拓?fù)渑判蛐蛄衉_________。4.設(shè)無向圖G中有n個頂點(diǎn),則該無向圖中每個頂點(diǎn)的度數(shù)最多是_________。5.設(shè)二叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為50,度數(shù)為1的結(jié)點(diǎn)數(shù)為30,則該二叉樹中總共有_______個結(jié)點(diǎn)數(shù)。
6.設(shè)F和R分別表示順序循環(huán)隊(duì)列的頭指針和尾指針,則判斷該循環(huán)隊(duì)列為空的條件為_____________________。
7.設(shè)二叉樹中結(jié)點(diǎn)的兩個指針域分別為lchild和rchild,則判斷指針變量p所指向的結(jié)點(diǎn)為葉子結(jié)點(diǎn)的條件是_____________________________________________。8.簡單選擇排序和直接插入排序算法的平均時間復(fù)雜度為___________。
9.快速排序算法的空間復(fù)雜度平均情況下為__________,最壞的情況下為__________。10.散列表中解決沖突的兩種方法是_____________和_____________。
數(shù)據(jù)結(jié)構(gòu)試卷
(六)參考答案
一、選擇題 1.D 2.A 3.A 4.A 5.D 6.D 7.B 8.A 9.C 10.B 11.C 12.A 13.B 14.D 15.B
二、判斷題
1.錯 2.對 3.對 4.對 5.錯 6.錯 7.對 8.錯 9.對 10.對
三、填空題
1.1.O(n)2.2.s->next=p->next;p->next=s 3.3.(1,3,2,4,5)4.4.n-1 5.5.129 6.6.F==R 7.7.p->lchild==0&&p->rchild==0 8.8.O(n2)9.9.O(nlog2n),O(n)10.10.開放定址法,鏈地址法
數(shù)據(jù)結(jié)構(gòu)試卷
(七)一、選擇題(30分)1.設(shè)某無向圖有n個頂點(diǎn),則該無向圖的鄰接表中有()個表頭結(jié)點(diǎn)。
(A)2n(B)n(C)n/2(D)n(n-1)2.設(shè)無向圖G中有n個頂點(diǎn),則該無向圖的最小生成樹上有()條邊。
(A)n(B)n-1(C)2n(D)2n-1 3.設(shè)一組初始記錄關(guān)鍵字序列為(60,80,55,40,42,85),則以第一個關(guān)鍵字45為基準(zhǔn)而得到的一趟快速排序結(jié)果是()。
(A)40,42,60,55,80,85(B)42,45,55,60,85,80(C)42,40,55,60,80,85(D)42,40,60,85,55,80 4.()二叉排序樹可以得到一個從小到大的有序序列。
(A)先序遍歷(B)中序遍歷(C)后序遍歷(D)層次遍歷
5.設(shè)按照從上到下、從左到右的順序從1開始對完全二叉樹進(jìn)行順序編號,則編號為i結(jié)點(diǎn)的左孩子結(jié)點(diǎn)的編號為()。
(A)2i+1(B)2i(C)i/2(D)2i-1 6.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的時間復(fù)雜度為()。(A)O(n)(B)O(nlog2n)(C)O(n)(D)O(n/2)7.設(shè)帶有頭結(jié)點(diǎn)的單向循環(huán)鏈表的頭指針變量為head,則其判空條件是()。
(A)head==0(B)head->next==0(C)head->next==head(D)head!=0 8.設(shè)某棵二叉樹的高度為10,則該二叉樹上葉子結(jié)點(diǎn)最多有()。
(A)20(B)256(C)512(D)1024 9.設(shè)一組初始記錄關(guān)鍵字序列為(13,18,24,35,47,50,62,83,90,115,134),則利用二分法查找關(guān)鍵字90需要比較的關(guān)鍵字個數(shù)為()。
(A)1(B)2(C)3(D)4 10.設(shè)指針變量top指向當(dāng)前鏈?zhǔn)綏5臈m?,則刪除棧頂元素的操作序列為()。
(A)top=top+1;(B)top=top-1;(C)top->next=top;(D)top=top->next;
三、填空題(30分)1.1.設(shè)指針變量p指向雙向鏈表中的結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X的操作序列為_________=p;s->right=p->right;__________=s; p->right->left=s;(設(shè)結(jié)點(diǎn)中的兩個指針域分別為left和right)。2.2.設(shè)完全有向圖中有n個頂點(diǎn),則該完全有向圖中共有________條有向條;設(shè)完全無向圖中有n個頂點(diǎn),則該完全無向圖中共有________條無向邊。
3.3.設(shè)關(guān)鍵字序列為(Kl,K2,…,Kn),則用篩選法建初始堆必須從第______個元素開始進(jìn)行篩選。
4.4.解決散列表沖突的兩種方法是________________和__________________。
5.5.設(shè)一棵三叉樹中有50個度數(shù)為0的結(jié)點(diǎn),21個度數(shù)為2的結(jié)點(diǎn),則該二叉樹中度數(shù)為3的結(jié)點(diǎn)數(shù)有______個。
6.6.高度為h的完全二叉樹中最少有________個結(jié)點(diǎn),最多有________個結(jié)點(diǎn)。7.7.設(shè)有一組初始關(guān)鍵字序列為(24,35,12,27,18,26),則第3趟直接插入排序結(jié)束后的結(jié)果的是__________________________________。
8.8.設(shè)有一組初始關(guān)鍵字序列為(24,35,12,27,18,26),則第3趟簡單選擇排序結(jié)束后的結(jié)果的是__________________________________。
9.9.設(shè)一棵二叉樹的前序序列為ABC,則有______________種不同的二叉樹可以得到這種序列。
10.10.下面程序段的功能是實(shí)現(xiàn)一趟快速排序,請?jiān)谙聞澗€處填上正確的語句。
struct record {int key;datatype others;};void quickpass(struct record r[], int s, int t, int &i){
int j=t;struct record x=r[s];i=s;
while(i while(i while(____________________)i=i+1;if(i } _________________;} 數(shù)據(jù)結(jié)構(gòu)試卷 (七)一、選擇題 1.B 2.B 3.C 4.B 6.A 7.C 8.C 9.B 三、填空題 1.1.s->left=p,p->right 2.2.n(n-1),n(n-1)/2 3.3.n/2 4.4.開放定址法,鏈地址法 5.5.14 6.6.2h-1,2h-1 7.7.(12,24,35,27,18,26)8.8.(12,18,24,27,35,26)9.9.5 10.10.i 5.B 10.D 數(shù)據(jù)結(jié)構(gòu)試卷 (八)一、選擇題(30分)1.1.字符串的長度是指()。 (A)串中不同字符的個數(shù)(B)串中不同字母的個數(shù) (C)串中所含字符的個數(shù)(D)串中不同數(shù)字的個數(shù) 2.2.建立一個長度為n的有序單鏈表的時間復(fù)雜度為() (A)O(n)(B)O(1)(C)O(n2)(D)O(log2n)3.3.兩個字符串相等的充要條件是()。 (A)兩個字符串的長度相等(B)兩個字符串中對應(yīng)位置上的字符相等 (C)同時具備(A)和(B)兩個條件(D)以上答案都不對 4.4.設(shè)某散列表的長度為100,散列函數(shù)H(k)=k % P,則P通常情況下最好選擇()。 (A)99(B)97(C)91(D)93 5.5.在二叉排序樹中插入一個關(guān)鍵字值的平均時間復(fù)雜度為()。(A)O(n)(B)O(1og2n)(C)O(nlog2n)(D)O(n)6.6.設(shè)一個順序有序表A[1:14]中有14個元素,則采用二分法查找元素A[4]的過程中比較元素的順序?yàn)?)。 (A)A[1],A[2],A[3],A[4](B)A[1],A[14],A[7],A[4](C)A[7],A[3],A[5],A[4](D)A[7],A[5],A[3],A[4] 7.7.設(shè)一棵完全二叉樹中有65個結(jié)點(diǎn),則該完全二叉樹的深度為()。 (A)8(B)7(C)6(D)5 8.8.設(shè)一棵三叉樹中有2個度數(shù)為1的結(jié)點(diǎn),2個度數(shù)為2的結(jié)點(diǎn),2個度數(shù)為3的結(jié)點(diǎn),則該三叉鏈權(quán)中有()個度數(shù)為0的結(jié)點(diǎn)。 (A)5(B)6(C)7(D)8 9.9.設(shè)無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點(diǎn)a出發(fā)進(jìn)行深度優(yōu)先遍歷可以得到的一種頂點(diǎn)序列為()。 (A)aedfcb(B)acfebd(C)aebcfd(D)aedfbc 10.10.隊(duì)列是一種()的線性表。 (A)先進(jìn)先出(B)先進(jìn)后出(C)只能插入(D)只能刪除 三、填空題(30分)1. 1. 設(shè)一組初始記錄關(guān)鍵字序列為(49,38,65,97,76,13,27,50),則以d=4為增量的一趟希爾排序結(jié)束后的結(jié)果為_____________________________。 2. 2. 下面程序段的功能是實(shí)現(xiàn)在二叉排序樹中插入一個新結(jié)點(diǎn),請?jiān)谙聞澗€處填上正確的內(nèi)容。 typedef struct node{int data;struct node *lchild;struct node *rchild;}bitree;void bstinsert(bitree *&t,int k){ if(t==0){____________________________;t->data=k;t->lchild=t->rchild=0;} else if(t->data>k)bstinsert(t->lchild,k);else__________________________;} 3. 3. 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X需要執(zhí)行的語句序列:s->next=p->next;_________________。4. 4. 設(shè)指針變量head指向雙向鏈表中的頭結(jié)點(diǎn),指針變量p指向雙向鏈表中的第一個結(jié)點(diǎn),則指針變量p和指針變量head之間的關(guān)系是p=_________和head=__________(設(shè)結(jié)點(diǎn)中的兩個指針域分別為llink和rlink)。 5. 5. 設(shè)某棵二叉樹的中序遍歷序列為ABCD,后序遍歷序列為BADC,則其前序遍歷序列為__________。 6. 6. 完全二叉樹中第5層上最少有__________個結(jié)點(diǎn),最多有_________個結(jié)點(diǎn)。7. 7. 設(shè)有向圖中不存在有向邊 8. 8. 設(shè)一組初始記錄關(guān)鍵字序列為(49,38,65,97,76,13,27,50),則第4趟直接選擇排序結(jié)束后的結(jié)果為_____________________________。 9. 9. 設(shè)連通圖G中有n個頂點(diǎn)e條邊,則對應(yīng)的最小生成樹上有___________條邊。10. 10. 設(shè)有一組初始記錄關(guān)鍵字序列為(50,16,23,68,94,70,73),則將它們調(diào)整成初始堆只需把16與___________相互交換即可。 數(shù)據(jù)結(jié)構(gòu)試卷 (八)參考答案 一、選擇題 1.C 2.C 3.C 4.B 5.B 6.C 7.B 8.C 9.A 10.A 三、填空題 1.1.(49,13,27,50,76,38,65,97)2.2.t=(bitree *)malloc(sizeof(bitree)),bstinsert(t->rchild,k)3.3.p->next=s 4.4.head->rlink,p->llink 5.5.CABD 6.6.1,16 7.7.0 8.8.(13,27,38,50,76,49,65,97)9.9.n-1 10.10.50 《數(shù)據(jù)結(jié)構(gòu)與算法》課程學(xué)習(xí)總結(jié)報告 本學(xué)期開設(shè)的《數(shù)據(jù)結(jié)構(gòu)與算法》課程已經(jīng)告一段落,現(xiàn)就其知識點(diǎn)及其掌握情況、學(xué)習(xí)體會以及對該門課程的教學(xué)建議等方面進(jìn)行學(xué)習(xí)總結(jié)。 一、《數(shù)據(jù)結(jié)構(gòu)與算法》知識點(diǎn) 第一章是這門學(xué)科的基礎(chǔ)章節(jié),從整體方面介紹了“數(shù)據(jù)結(jié)構(gòu)和算法”,同時引入相關(guān)的學(xué)術(shù)概念和術(shù)語,如數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)類型以及數(shù)據(jù)結(jié)構(gòu)的定義。重點(diǎn)是數(shù)據(jù)結(jié)構(gòu)的括邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和運(yùn)算集合的含義及其相互聯(lián)系。數(shù)據(jù)結(jié)構(gòu)和兩大邏輯結(jié)構(gòu)的4四種常用存儲方法;邏輯結(jié)構(gòu)分為四類:集合型、線性、樹形和圖形結(jié)構(gòu),數(shù)據(jù)元素的存儲結(jié)構(gòu)分為:順序存儲、鏈接存儲、索引存儲和散列存儲四類。難點(diǎn)是算法復(fù)雜度的分析方法和性能的分析。 第二章詳細(xì)地分析了順序表。介紹了順序表的相關(guān)概念及其有關(guān)運(yùn)算?;具\(yùn)算有:初始化表、求表長、排序、元素的查找、插入及刪除等。元素查找方法有:簡單順序查找、二分查找和分塊查找。排序方法有:直接插入排序、希爾排序、冒泡排序、快速排序、直接選擇排序及歸并排序等,在各種算法思想的先分析后,要弄清各種算法的時間復(fù)雜度與空間性能的優(yōu)點(diǎn)和缺點(diǎn),在什么特定的場合適合哪種算法思想。最后介紹了順序串的概念,順序串是順序表的一個特例;區(qū)別在于組成順序串的數(shù)據(jù)元素是一組字符,其重點(diǎn)在于串的模式匹配。 第三章介紹鏈表。鏈表中數(shù)據(jù)元素的存儲不一定是連續(xù)的,還可以占用任意的、不連續(xù)的物理存儲區(qū)域。與順序表相比,鏈表的插入、刪除不需要移動元素,給算法的效率帶來較大的提高,且在存儲空間上有動態(tài)申請的優(yōu)點(diǎn)。這一章中介紹了鏈表的節(jié)點(diǎn)結(jié)構(gòu)、靜態(tài)與動態(tài)鏈表的概念、鏈表的基本運(yùn)算(如求表長、插入、查找、刪除等)、單鏈表的建立(頭插法和尾插法)以及雙向循環(huán)鏈表的定義、結(jié)構(gòu)、功能和基本算法。弄清其個運(yùn)算的算法思想及其時間復(fù)雜度和空間性能。最后介紹了鏈表之中存儲結(jié)構(gòu)在實(shí)際中的相關(guān)應(yīng)用。 第四章,堆棧是運(yùn)算受限制的線性結(jié)構(gòu)。其基本運(yùn)算方法與順序表和鏈表運(yùn)算方法基本相同,不同的是堆棧須遵循“先進(jìn)后出”的規(guī)則,對堆棧的操作只能在棧頂進(jìn)行;堆棧在文字處理,匹配問題和算術(shù)表達(dá)式的求值問題方面的應(yīng)用。 第五章,隊(duì)列是一種夠類似堆棧的線性結(jié)構(gòu)。其基本運(yùn)算方法與順序表和鏈表運(yùn)算方法基本相同,不同的是堆棧須遵循“先進(jìn)先出”的規(guī)則,對堆棧的操作只能在棧頂進(jìn)行;其運(yùn)算有入隊(duì)、出隊(duì)等操作。在介紹隊(duì)列時,提出了循環(huán)隊(duì)列的概念,以避免“假溢出”的現(xiàn)象。 第六章介紹了特殊矩陣和廣義表的概念與應(yīng)用。其中,特殊矩陣包括對稱矩陣、三角矩陣、對角矩陣和稀疏矩陣,書中分別詳細(xì)介紹了它們的存儲結(jié)構(gòu)。其中三元組和十字鏈表這兩種結(jié)構(gòu)尤為重要;對著兩種結(jié)構(gòu)的建立了應(yīng)用要掌握。稀疏矩陣的應(yīng)用包括轉(zhuǎn)置和加法運(yùn)算等。最后介紹了廣義表的相關(guān)概念及存儲結(jié)構(gòu),關(guān)于它的應(yīng)用,課本中舉了m元多項(xiàng)式的表示問題。 第七章二叉樹的知識是重點(diǎn)內(nèi)容。在介紹有關(guān)概念時,提到了二叉樹的性質(zhì)以及兩種特殊的二叉樹:完全二叉樹和滿二叉樹。接著介紹二叉樹的順序存儲和鏈接存儲以及生成算法。重點(diǎn)介紹二叉樹的遍歷算法(遞歸算法、先序、中序和后序遍歷非遞歸算法)和線索二叉樹。二叉樹的應(yīng)用:基本算法、哈弗曼樹、二叉排序樹和堆排序,其中關(guān)于二叉排序樹和哈弗曼書的構(gòu)建是重點(diǎn)。 第八章介紹了樹。樹與二叉樹是不同的概念。教材介紹了樹和森林的概念、遍歷和存儲結(jié)構(gòu),還有樹、森林和二叉樹的相互關(guān)系,樹或森林怎樣轉(zhuǎn)化成二叉樹,二叉樹又如何轉(zhuǎn)換為樹和森林等算法。 第九章,散列結(jié)構(gòu)是一種查找效率很高的一種數(shù)據(jù)結(jié)構(gòu)。本章的主要知識點(diǎn)有:散列結(jié) 構(gòu)的概念及其存儲結(jié)構(gòu)、散列函數(shù)、兩種沖突處理方法、線性探測散列和鏈地址散列的基本算法以及散列結(jié)構(gòu)的查找性能分析。 最后一章介紹了圖的概念及其應(yīng)用,是本書的難點(diǎn)。圖的存儲結(jié)構(gòu)的知識點(diǎn)有:鄰接矩陣、鄰接表、逆鄰接表、十字鏈表和鄰接多重表。圖的遍歷包括圖的深度優(yōu)先搜索遍歷和廣度優(yōu)先搜索遍歷。其余知識點(diǎn)有:有向圖、連通圖、生成樹和森林、最短路徑問題和有向無環(huán)圖及其應(yīng)用。有向無環(huán)圖重點(diǎn)理解AOV網(wǎng)和拓?fù)渑判蚣捌渌惴ā?/p> 二、對各知識點(diǎn)的掌握情況 總體來看,對教材中的知識點(diǎn)理解較為完善,但各個章節(jié)均出現(xiàn)有個別知識點(diǎn)較為陌生的現(xiàn)象,對某些具體的問題和應(yīng)用仍有一些模糊與措手。各個章節(jié)出現(xiàn)的知識點(diǎn)理解和掌握情況明確一下。 第一章中我對數(shù)據(jù)和數(shù)據(jù)結(jié)構(gòu)的概念理解較為透徹,熟悉數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)。算法的時間、空間性能分析是重點(diǎn),同樣也是難點(diǎn),尤其是空間性能分析需要加強(qiáng)。在某些強(qiáng)大與復(fù)雜的算法面前的處理有些棘手。 第二章,順序表的概念、生成算法理解較為清晰,并且熟悉簡單順序查找和二分查找,對分塊查找較為含糊。刪除方面的問題比較容易些。排序問題中,由于冒泡排序在大一C語言課上已經(jīng)學(xué)習(xí)過,再來學(xué)習(xí)感覺相對輕松些。對插入排序和選擇排序理解良好,但是,在實(shí)際運(yùn)用中仍然出現(xiàn)明顯不熟練的現(xiàn)象。由于在歸并排序?qū)W習(xí)中感覺較吃力,現(xiàn)在對這種排序方法仍然非常模糊,所以需要花較多的時間來補(bǔ)習(xí)。此外串的模式匹配也是較難理解的一個地方。 第三章鏈表中,除對雙向循環(huán)鏈表這一知識點(diǎn)理解困難之外,在對鏈表進(jìn)行插入刪除和排序相關(guān)操作上同順序表的操作基本相當(dāng)。其他的知識點(diǎn)像單鏈表的建立和基本算法等都較為熟悉。 第四章和第五章有關(guān)堆棧以及隊(duì)列的知識點(diǎn)比較少,除有關(guān)算法較為特殊以外,其余算法都是先前學(xué)過的順序表和鏈表的知識,加上思想上較為重視,因此這部分內(nèi)容是我對全書掌握最好的一部分。在一些實(shí)際問題的應(yīng)用與處理方面,對其進(jìn)行存儲結(jié)構(gòu)的選擇還是需要認(rèn)真考慮的。在算法的時間復(fù)雜度和空間性能的分析仍有些困難。 第六章的學(xué)習(xí)感覺較為困難的部分在于矩陣的應(yīng)用上。在矩陣的存儲結(jié)構(gòu)中,使用三元組表發(fā)相對較為簡單,而使用十字鏈表就有些困難了。但在某些問題的處理上又必須或從節(jié)省空間考慮采用十字鏈表來處理,想矩陣的加法運(yùn)算。廣義表的定義還是比較容易理解的,其存儲結(jié)構(gòu)也不難掌握,關(guān)于應(yīng)用也只局限于在多項(xiàng)式的表示上。 第七章是全書的重點(diǎn)。在這一章中概念和定義都很多,有些很昏人但都很重要,要區(qū)分開來。二叉樹的性質(zhì)容易懂卻很難記憶。對二叉樹的存儲結(jié)構(gòu)和遍歷算法這部分內(nèi)容掌握較好,能夠熟練運(yùn)用。關(guān)于二叉排序樹和的哈弗曼樹卻相對有些壓力,其生成和對其關(guān)鍵字的插入和刪除時重點(diǎn)。 第八章關(guān)于樹的分析,首先要明確樹和二叉樹的區(qū)別,以及書中的相關(guān)定義和概念。關(guān)于二叉樹、樹和森林之間的轉(zhuǎn)換和遍歷方法是重點(diǎn),但不算是難。接著就是數(shù)的存儲結(jié)構(gòu)的選擇及轉(zhuǎn)化為二叉樹的算法,這部分有些吃力。再就介紹了特殊的樹-B樹,關(guān)于對B樹的操作,插入關(guān)鍵字是中帶領(lǐng)和難點(diǎn)。 第九章散列結(jié)構(gòu)這一章理解比較完善的知識點(diǎn)有:基本概念和存儲結(jié)構(gòu)。散列函數(shù)中直接定址法和除留余數(shù)法學(xué)得比較扎實(shí),對數(shù)字分析法等方法則感覺較為陌生。對兩種沖突處理的算法思想的理解良好,問題在于用C語言描述上。 最后一章,圖及其應(yīng)用中,相關(guān)定義及其概念很多,容易混淆,這就要慢慢來,仔細(xì)分辨。圖的鄰接矩陣、鄰接表表示法及其之間的轉(zhuǎn)換時重點(diǎn)和難點(diǎn)。而對十字鏈表和鄰接多重表的表示法則較為陌生。感覺理解較為吃力的內(nèi)容有圖的遍歷(包括深度和廣度優(yōu)先遍歷),以及最小生成樹的問題。最短路徑、AOV網(wǎng)、關(guān)鍵路徑、AOE網(wǎng)和拓?fù)渑判虻膶W(xué)習(xí)也是相對較輕松的。,三、學(xué)習(xí)體會 在學(xué)習(xí)開始,王教授就明確提出它不是一種計(jì)算機(jī)語言,不會介紹新的關(guān)鍵詞,而是通過學(xué)習(xí)可以設(shè)計(jì)出良好的算法,高效地組織數(shù)據(jù)。一個程序無論采用何種語言,其基本算法思想不會改變。聯(lián)系到在大一和大二上學(xué)期學(xué)習(xí)的C和C++語言,我深刻認(rèn)識到了這一點(diǎn)。“軟件開發(fā)好比寫作文,計(jì)算機(jī)語言提供了許多華麗的辭藻,而數(shù)據(jù)結(jié)構(gòu)則考慮如何將這些辭藻組織成一篇優(yōu)秀的文章來?!痹趯W(xué)習(xí)這門課中,要熟悉對算法思想的一些描述手段,包括文字描述、圖形描述和計(jì)算機(jī)語言描述等。因此,計(jì)算機(jī)語言基礎(chǔ)是必須的,因?yàn)樗峁┝艘环N重要的算法思想描述手段——機(jī)器可識別的描述。 這門課結(jié)束之后,我總結(jié)了學(xué)習(xí)中遇到的一些問題,最為突出的,書本上的知識與老師的講解都比較容易理解,但是當(dāng)自己采用剛學(xué)的知識點(diǎn)編寫程序時卻感到十分棘手,有時表現(xiàn)在想不到適合題意的算法,有時表現(xiàn)在算法想出來后,只能將書本上原有的程序段謄寫到自己的程序中再加以必要的連接以完成程序的編寫。針對這一情況,我會嚴(yán)格要求自己,熟練掌握算法思想,盡量獨(dú)立完成程序的編寫與修改工作,只有這樣,才能夠提高運(yùn)用知識,解決問題的能力。 四、對《數(shù)據(jù)結(jié)構(gòu)與算法》課程教學(xué)的建議 1、建議在上課過程中加大隨堂練習(xí)的分量,以便學(xué)生能當(dāng)堂消化課堂上學(xué)習(xí)的知識,也便于及時了解學(xué)生對知識點(diǎn)的掌握情況,同時有助于學(xué)生保持良好的精神狀態(tài)。 2、建議在課時允許的情況下,增加習(xí)題課的分量,通過課堂的習(xí)題講解,加深對知識點(diǎn)的掌握,同時對各知識點(diǎn)的運(yùn)用有一個更為直觀和具體的認(rèn)識。 以上便是我對《數(shù)據(jù)結(jié)構(gòu)與算法》這門課的學(xué)習(xí)總結(jié),我會抓緊時間將沒有吃透的知識點(diǎn)補(bǔ)齊。今后我仍然會繼續(xù)學(xué)習(xí),克服學(xué)習(xí)中遇到的難關(guān),在打牢基礎(chǔ)的前提下向更深入的層面邁進(jìn)! 山東:07年專升本考試數(shù)據(jù)結(jié)構(gòu)模擬試題1 一、填空題:(每小題2分,共10分) 1.設(shè)有數(shù)據(jù)結(jié)構(gòu)(D,R),其中 D 是數(shù)據(jù)元素的有限集,R 是 的有限集。 2.深度為 k 的二叉樹其結(jié)點(diǎn)數(shù)至多有 個。 3.棧是一種特殊的線性表,它允許在表的一端進(jìn)行 操作。 4.通常象交通、道路問題的數(shù)學(xué)模型是一種稱為 的數(shù)據(jù)結(jié)構(gòu)。 5.哈希表是一種查找表,可以根據(jù)哈希函數(shù)直接獲得。 二、單項(xiàng)選擇題:(每小題2分,共10分) 對于下列各題,在備選答案中選出一個正確的,并將其編號填在“ ”位置上。 1.若線性表最常用的操作是存取第 i 個元素及其前驅(qū)元素的值,則采用 存儲方式最節(jié)省運(yùn)算時間。 A.單鏈表 B.雙鏈表 C.單循環(huán)鏈表 D.順序表 2.下列排序算法中,算法在進(jìn)行一趟相應(yīng)的排序處理結(jié)束后不一定能選出一個元素放到其最終位置上。 A.直選擇排序 B.冒泡排序 C.歸并排序 D.堆排序 3.隊(duì)列的操作原則是。 A.先進(jìn)后出 B.先進(jìn)先出 C.只能進(jìn)行插入 D.只能進(jìn)行刪除 4.在具有 n 個結(jié)點(diǎn)的二叉鏈表中,非空的鏈域個數(shù)為。 A.n-1 B.n C.n+1 D.不確定 5.對具有 n 個元素的有序查找表采用折半查找算法查找一個鍵值,其最壞比較次數(shù)的數(shù)量級為。 A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2) 三、判斷題:(每小題2分,共10分) 判斷下列各題是否正確,若正確,在題后的括號內(nèi)填“T”,否則填“F”。 1.在棧為空的情況下不能作出棧處理,否則,將產(chǎn)生下溢出。() 2.如果有向圖 G=(V, E)的拓?fù)湫蛄形ㄒ?,則圖中必定僅有一個頂點(diǎn)的入度為0、一個頂點(diǎn)的出度為0。() 3.在大根堆中,必定滿足每個結(jié)點(diǎn)的鍵值大于其左右子樹中所有結(jié)點(diǎn)的鍵值。()4.在采用線性探測法處理沖突的散列表中所有同義詞在表中相鄰。() 5.在索引順序表中,對索引表既可采用順序查找,也可采用二分查找。() 四、解答下列各題:(每題10分,共40分) 1.已知線性表 L 采用帶頭結(jié)點(diǎn)的的單向循環(huán)鏈表表示,試給出它的存儲結(jié)構(gòu)類型描述及相應(yīng)的示意圖。 2.已知一棵二叉樹的先序、中序和后序序列如下所示,請?zhí)顚懜餍蛄兄锌崭裉幍慕Y(jié)點(diǎn),并畫出該二叉樹的二叉鏈表存儲結(jié)構(gòu)示意圖。 先序序列是:_ B _ F _ I C E H _ G; 中序序列是:D _ K F I A _ E J C _ ; 后序序列是:_ K _ F B H J _ G _ A 3.已知數(shù)據(jù)表為(48,70,33,65,24,56,12,92,86,22),a)寫出采用快速排序算法進(jìn)行排序時第一趟快速劃分的詳細(xì)過程及結(jié)果;b)寫出按基數(shù)排序思想對最低位進(jìn)行一次分配和收集的結(jié)果。 4.對圖1所示的帶權(quán)無向圖,寫出它的鄰接矩陣和深度優(yōu)先搜索序列,并按克魯斯卡算法求其最小生成樹(寫出求解的詳細(xì)過程示意圖)。 圖1 帶權(quán)無向圖 五、算法設(shè)計(jì)題:(前兩題必做,每題15分,共30分;第三題為附加題,選做,10分) 1.已知隊(duì)列 Q 以循環(huán)隊(duì)列存儲。寫出 Q 的存儲結(jié)構(gòu)類型描述,并試編寫算法實(shí)現(xiàn)將元素 x 插入隊(duì)列 Q 的入隊(duì)操作 EnQueue(Q,x)和從隊(duì)列 Q 中獲取隊(duì)首元素的函數(shù) GetTop(Q)。 2.假設(shè)線性表 L=(a1,a2,??,an)用帶頭結(jié)點(diǎn)的單鏈表存儲表示,試編寫算法對其實(shí)現(xiàn)就地逆置,即利用原鏈表中每一個結(jié)點(diǎn)存儲空間,使得元素的邏輯次序改變?yōu)?an,??, a2,a1)。 3.設(shè)非空二叉樹 T 采用中序線索二叉鏈表表示,寫出 T 的存儲結(jié)構(gòu)類型描述。試編寫算法 InOrderTraverse(T)實(shí)現(xiàn)對二叉樹 T 的中序遍歷。山東:07年專升本考試數(shù)據(jù)結(jié)構(gòu)模擬試題2 一、單項(xiàng)選擇題:(每小題2分,共10分) 對于下列各題,在備選答案中選出一個正確的,并將其編號填在“ ”位置上。 1.折半查找法要求查找表中各元素的鍵值必須是。 A.遞增或遞減 B.遞增 C.遞減 D.無序 2.若對某線性表最常進(jìn)行的操作是在最后一個元素之后插入和刪除第一個元素,則采用 存儲方式最節(jié)省運(yùn)算時間。 A.單鏈表 B.雙鏈表 C.僅有頭指針的單循環(huán)鏈表 D.僅有尾指針的單循環(huán)鏈表 3.有64個結(jié)點(diǎn)的完全二叉樹的深度為(假設(shè)根結(jié)點(diǎn)的層次為1)。 A.8 B.7 C.6 D.5 4.對于鍵值序列(2,33,21,18,65,38,7,49,24,86),用篩選法建堆,必須從鍵值為 的結(jié)點(diǎn)開始。 A.86 B.2 C.65 D.38 5.設(shè)圖 G 用鄰接表存儲,則求每個頂點(diǎn)入度的算法時間復(fù)雜度為。 A.O(n)B.O(n+e)C.O(n*n)D.O(n*e) 二、判斷題:(每小題2分,共10分) 判斷下列各題是否正確,若正確,在題后的括號內(nèi)填“T”,否則填“F”。 1.在隊(duì)滿情況下不能作入隊(duì)處理,否則,將產(chǎn)生“上溢”。() 2.基于插入思想的排序算法都是穩(wěn)定的。() 3.一個有向圖的鄰接表和逆鄰接表中的結(jié)點(diǎn)個數(shù)不一定相等。() 4.若一棵二叉樹的任一非葉子結(jié)點(diǎn)度為2,則該二叉樹為滿二叉樹。() 5.廣義表是線性表的推廣,因此也可以采用順序方式進(jìn)行存儲。() 三、填空題:(每小題2分,共10分) 1.在單鏈表中,刪除指針 P 所指結(jié)點(diǎn)的后繼結(jié)點(diǎn)的語句是:。 2.有向圖 G 用鄰接矩陣 A[1..n,1..n] 存儲表示,其第 i 行的所有元素之和等于頂點(diǎn) i 的。3.基數(shù)排序算法的時間復(fù)雜度為。 4.平衡二叉樹中每個結(jié)點(diǎn)的平衡因子定義為。 5.利用直接插入排序算法對有 n 個元素的數(shù)據(jù)表進(jìn)行排序,在最壞情況下,元素的移動次為。 四、解答下列各題:(每小題10分,共40分) 1.寫出采用順序方式存儲的棧的類型描述及相應(yīng)的入棧、出棧操作的示意圖。 2.已知數(shù)據(jù)表為(60,20,31,5,44,55,61,30,80,150,4,29),寫出采用希爾排序算法進(jìn)行排序的詳細(xì)過程和結(jié)果(假設(shè)增量序列 dlta[] ={6,3,1})。 3.已知圖 G 的鄰接表存儲結(jié)構(gòu)示意圖如下所示,畫出它的邏輯關(guān)系示意圖,以及按深度優(yōu)先搜索和廣度優(yōu)先搜索進(jìn)行遍歷所得到的頂點(diǎn)序列。 4.設(shè)散列函數(shù)為 H(K)= K mod 5,散列表的地址空間為 0..6,初始時散列表為空,用線性探測法解決沖突,請寫出依次插入23,14,9,6,30,12,18時散列地址的計(jì)算過程及結(jié)果,以及最后得到的散列表。 五、算法設(shè)計(jì)題:(前兩題必做,每題15分,共30分;第三題為附加題,選做,10分) 1.設(shè)計(jì)算法將一個帶頭結(jié)點(diǎn)的單循環(huán)鏈表 A 分解為兩個具有相同結(jié)構(gòu)的鏈表 B、C,其中:B 表中的結(jié)點(diǎn)為 A 表中元素的順序號為奇數(shù)的結(jié)點(diǎn),而 C 表中的結(jié)點(diǎn)為 A 表中元素的順序號為偶數(shù)的結(jié)點(diǎn)。(要求利用原表結(jié)點(diǎn)。) 2.已知 S 為順序棧。寫出 S 的存儲結(jié)構(gòu)類型描述。試編寫算法實(shí)現(xiàn)將元素 x 插入棧 S 的入棧操作 Push(S,x)和刪除棧頂元素的出棧操作 Pop(S)。 3.已知一棵完全二叉樹存于順序表 sa 中,sa.elem[1..sa.last] 包含各結(jié)點(diǎn)值。試編寫算法根據(jù)此順序存儲結(jié)構(gòu)建立該二叉樹的二叉鏈表 T。 ☆自考樂園---心境隨緣,誠與天下自考人共勉??! ☆自考樂園---分享快樂,你的快樂老家?。 钭钥紭穲@---引領(lǐng)成功,你的精神樂園?。∽钥紭穲@俱樂部,專注于自考,致力于成為全國最全,最優(yōu)的自考學(xué)習(xí)交流,資料共享平臺.....全國2009年10月自學(xué)考試數(shù)據(jù)結(jié)構(gòu)試題 課程代碼:02331 一、單項(xiàng)選擇題(本大題共15小題,每小題2分,共30分) 在每小題列出的四個備選項(xiàng)中只有一個是符合題目要求的,請將其代碼填寫在題后的括號內(nèi)。錯選、多選或未選均無分。 1.按值可否分解,數(shù)據(jù)類型通??煞譃閮深?,它們是()A.靜態(tài)類型和動態(tài)類型 C.原子類型和結(jié)構(gòu)類型 B.原子類型和表類型 D.?dāng)?shù)組類型和指針類型 2.對于三個函數(shù)f(n)=2008n3+8n2+96000,g(n)=8n3+8n+2008和h(n)=8888nlogn+3n2,下列陳述中不成立的.是()A.f(n)是0(g(n))C.h(n)是0(nlogn) B.g(n)是0(f(n))D.h(n)是0(n2)3.指針p、q和r依次指向某循環(huán)鏈表中三個相鄰的結(jié)點(diǎn),交換結(jié)點(diǎn)*q和結(jié)點(diǎn)*r在表中次序的程序段是() A.p->next=r; q->next=r->next; r->next=q; B.p->next=r; r->next=q; q->next=r->next; C.r->next=q; q->next=r->next; p->next=r; D.r->next=q; p->next=r; q->next=r->next; 4.若進(jìn)棧次序?yàn)閍,b,c,且進(jìn)棧和出棧可以穿插進(jìn)行,則可能出現(xiàn)的含3個元素的出棧序列個數(shù)是()A.3 C.6 B.5 D.7 5.假設(shè)以數(shù)組A[n]存放循環(huán)隊(duì)列的元素,其頭指針front指向隊(duì)頭元素的前一個位置、尾指針rear指向隊(duì)尾元素所在的存儲位置,則在少用一個元素空間的前提下,隊(duì)列滿的判定條件為()A.rear= =front C.rear+1= =front 6.串的操作函數(shù)str定義為: int str(char*s){ char *p=s; while(*p!=′
第三篇:數(shù)據(jù)結(jié)構(gòu)總結(jié)[推薦]
第四篇:山東07年專升本考試數(shù)據(jù)結(jié)構(gòu)模擬試題
第五篇:全國2009年10月自學(xué)考試數(shù)據(jù)結(jié)構(gòu)試題