數(shù)據(jù)結(jié)構(gòu)考試題1_第1頁
數(shù)據(jù)結(jié)構(gòu)考試題1_第2頁
數(shù)據(jù)結(jié)構(gòu)考試題1_第3頁
數(shù)據(jù)結(jié)構(gòu)考試題1_第4頁
數(shù)據(jù)結(jié)構(gòu)考試題1_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.要求:所有的題目的解答均寫在答題紙上,需寫清楚題目的序號。每張答題紙都要寫上姓名和學(xué)號。一、單項選擇題(每小題1.5分,共計30分)1. 數(shù)據(jù)結(jié)構(gòu)是指 。A. 一種數(shù)據(jù)類型B. 數(shù)據(jù)的存儲結(jié)構(gòu)C. 一組性質(zhì)相同的數(shù)據(jù)元素的集合D. 相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合2. 以下算法的時間復(fù)雜度為 。void fun(int n)int i=1;while (i=n)i+;A. O(n)B. O()C. O(nlog2n)D. O(log2n)3. 在一個長度為n的有序順序表中刪除元素值為x的元素時,在查找元素x時采用二分查找,此時的時間復(fù)雜度為 。A. O(n)B. O(nlog2

2、n)C. O(n2)D. O()4. 在一個帶頭結(jié)點的循環(huán)單鏈表L中,刪除元素值為x的結(jié)點,算法的時間復(fù)雜度為 。A. O(n)B. O()C. O(nlog2n)D. O(n2)5. 若一個棧采用數(shù)組s0.n-1存放其元素,初始時棧頂指針為n,則以下元素x進棧的正確操作是 。A.top+;stop=x;B.stop=x;top+;C.top-;stop=x;B.stop=x;top-;6. 中綴表達式“2*(3+4)-1”的后綴表達式是 ,其中#表示一個數(shù)值的結(jié)束。A. 2#3#4#1#*+-B. 2#3#4#+*1#-C. 2#3#4#*+1#-D. -+*2#3#4#1#7. 設(shè)環(huán)形隊列

3、中數(shù)組的下標(biāo)為0N-1,其隊頭、隊尾指針分別為front和rear(front指向隊列中隊頭元素的前一個位置,rear指向隊尾元素的位置),則其元素個數(shù)為 。A. rear-frontB. rear-front-1C. (rear-front)N+1D. (rear-front+N)N8. 若用一個大小為6的數(shù)組來實現(xiàn)環(huán)形隊列,隊頭指針front指向隊列中隊頭元素的前一個位置,隊尾指針rear指向隊尾元素的位置。若當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為 。A. 1和5B. 2和4C. 4和2D. 5和19. 一棵深度為

4、h(h1)的完全二叉樹至少有 個結(jié)點。A. 2h-1B. 2hC. 2h+1D. 2h-1+110. 一棵含有n個結(jié)點的線索二叉樹中,其線索個數(shù)為 。A. 2nB. n-1C. n+1D. n11. 設(shè)一棵哈夫曼樹中有1999個結(jié)點,該哈夫曼樹用于對 個字符進行編碼。A. 999B. 998C. 1000D. 100112. 一個含有n個頂點的無向連通圖采用鄰接矩陣存儲,則該矩陣一定是 。A. 對稱矩陣B. 非對稱矩陣C. 稀疏矩陣D. 稠密矩陣13. 設(shè)無向連通圖有n個頂點e條邊,若滿足 ,則圖中一定有回路。A. enB. e1)個元素的線性表的運算只有4種:刪除第一個元素;刪除最后一個元素

5、;在第一個元素前面插入新元素;在最后一個元素的后面插入新元素,則最好使用以下哪種存儲結(jié)構(gòu),并簡要說明理由。(1)只有尾結(jié)點指針沒有頭結(jié)點指針的循環(huán)單鏈表(2)只有尾結(jié)點指針沒有頭結(jié)點指針的非循環(huán)雙鏈表(3)只有頭結(jié)點指針沒有尾結(jié)點指針的循環(huán)雙鏈表(4)既有頭結(jié)點指針也有尾結(jié)點指針的循環(huán)單鏈表2. 已知一棵度為4的樹中,其度為0、1、2、3的結(jié)點數(shù)分別為14、4、3、2,求該樹的結(jié)點總數(shù)n和度為4的結(jié)點個數(shù),并給出推導(dǎo)過程。3. 有人提出這樣的一種從圖G中頂點u開始構(gòu)造最小生成樹的方法:假設(shè)G=(V,E)是一個具有n個頂點的帶權(quán)連通無向圖,T=(U,TE)是G的最小生成樹,其中U是T的頂點集,T

6、E是T的邊集,則由G構(gòu)造從起始頂點u出發(fā)的最小生成樹T的步驟如下:(1)初始化U=u。以u到其他頂點的所有邊為候選邊。(2)重復(fù)以下步驟n-1次,使得其他n-1個頂點被加入到U中。從候選邊中挑選權(quán)值最小的邊加入到TE,設(shè)該邊在V-U中的頂點是v,將v加入U中??疾轫旤cv,將v與V-U頂點集中的所有邊作為新的候選邊。若此方法求得的T是最小生成樹,請予以證明。若不能求得最小邊,請舉出反例。4. 有一棵二叉排序樹按先序遍歷得到的序列為:(12,5,2,8,6,10,16,15,18,20)?;卮鹨韵聠栴}:(1)畫出該二叉排序樹。(2)給出該二叉排序樹的中序遍歷序列。(3)求在等概率下的查找成功和不成

7、功情況下的平均查找長度。三、算法設(shè)計題(每小題10分,共計30分)1. 設(shè)A和B是兩個結(jié)點個數(shù)分別為m和n的單鏈表(帶頭結(jié)點),其中元素遞增有序。設(shè)計一個盡可能高效的算法求A和B的交集,要求不破壞A、B的結(jié)點,將交集存放在單鏈表C中。給出你所設(shè)計的算法的時間復(fù)雜度和空間復(fù)雜度。2. 假設(shè)二叉樹b采用二叉鏈存儲結(jié)構(gòu),設(shè)計一個算法void findparent(BTNode *b,ElemType x,BTNode *&p)求指定值為x的結(jié)點的雙親結(jié)點p,提示,根結(jié)點的雙親為NULL,若在b中未找到值為x的結(jié)點,p亦為NULL。3. 假設(shè)一個連通圖采用鄰接表G存儲結(jié)構(gòu)表示。設(shè)計一個算法,求起點u到

8、終點v的經(jīng)過頂點k的所有路徑。四、附加題(10分)說明:附加題不計入期未考試總分,但計入本課程的總分。假設(shè)某專業(yè)有若干個班,每個班有若干學(xué)生,每個學(xué)生包含姓名和分數(shù),這樣構(gòu)成一棵樹,如圖1所示。假設(shè)樹中每個結(jié)點的name域均不相同,該樹采用孩子兄弟鏈存儲結(jié)構(gòu),其結(jié)點類型定義如下:typedef struct nodechar name50;/專業(yè)、班號或姓名float score;/分數(shù)struct node *child;/指向最左邊的孩子結(jié)點struct node *brother;/指向下一個兄弟結(jié)點 TNode;完成以下算法:(1)設(shè)計一個算法求所有的學(xué)生人數(shù)。(2)求指定某班的平均分

9、。圖1 一棵學(xué)生成績樹“數(shù)據(jù)結(jié)構(gòu)”考試試題(A)參考答案要求:所有的題目的解答均寫在答題紙上,需寫清楚題目的序號。每張答題紙都要寫上姓名和學(xué)號。一、單項選擇題(每小題1.5分,共計30分)1. D2. A3. A4. A5. C6. B7. D8. B9. A10. C11. C12. A13. A14. D15. D16. C17. D18. A19. A20. C二、問答題(共4小題,每小題10分,共計40分)1. 答:本題答案為(3),因為實現(xiàn)上述4種運算的時間復(fù)雜度均為O(1)。【評分說明】選擇結(jié)果占4分,理由占6分。若結(jié)果錯誤,但對各操作時間復(fù)雜度作了分析,可給25分。2. 答:結(jié)點

10、總數(shù)n=n0+n1+n2+n3+n4,即n=23+n4,又有:度之和=n-1=0n0+1n1+2n2+3n3+4n4,即n=17+4n4,綜合兩式得:n4=2,n=25。所以,該樹的結(jié)點總數(shù)為25,度為4的結(jié)點個數(shù)為2?!驹u分說明】結(jié)果為4分,過程占6分。 3. 答:此方法不能求得最小生成樹。例如,對于如圖5.1(a)所示的帶權(quán)連通無向圖,按照上述方法從頂點0開始求得的結(jié)果為5.1(b)所示的樹,顯然它不是最小生成樹,正確的最小生成樹如圖5.1(c)所示。在有些情況下,上述方法無法求得結(jié)果,例如對于如圖5.1(d)所示的帶權(quán)連通無向圖,從頂點0出發(fā),找到頂點1(邊(0,1),從頂點1出發(fā),找到

11、頂點3(邊(1,3),再從頂點3出發(fā),找到頂點0(邊(3,0),這樣構(gòu)成回路,就不能求得最小生成樹了。圖1 求最小生成樹的反例說明:只需給出一種情況即可?!驹u分說明】回答不能求得最小生成樹得5分,反例為5分。若指出可求得最小生成樹,根據(jù)證明過程給12分。4. 答:(1)先序遍歷得到的序列為:(12,5,2,8,6,10,16,15,18,20),中序序列是一個有序序列,所以為:(2,5,6,8,10,12,15,16,18,20),由先序序列和中序序列可以構(gòu)造出對應(yīng)的二叉樹,如圖2所示。(2)中序遍歷序列為:2,5,6,8,10,12,15,16,18,20。(3)ASL成功=(11+22+4

12、3+34)/10=29/10。ASL不成功=(53+64/11=39/11。圖2【評分說明】(1)小題占6分,(2)(3)小題各占2分。三、算法設(shè)計題(每小題10分,共計30分)1. 設(shè)A和B是兩個結(jié)點個數(shù)分別為m和n的單鏈表(帶頭結(jié)點),其中元素遞增有序。設(shè)計一個盡可能高效的算法求A和B的交集,要求不破壞A、B的結(jié)點,將交集存放在單鏈表C中。給出你所設(shè)計的算法的時間復(fù)雜度和空間復(fù)雜度。解:算法如下:void insertion(LinkList *A,LinkList *B,LinkList *&C)LinkList *p=A-next,*q=B-next,*s,*t;C=(LinkList

13、 *)malloc(sizeof(LinkList);t=C;while (p!=NULL & q!=NULL)if (p-data=q-data)s=(LinkList *)malloc(sizeof(LinkList);s-data=p-data;t-next=s;t=s;p=p-next;q=q-next;else if (p-datadata)p=p-next;elseq=q-next;t-next=NULL;算法的時間復(fù)雜度為O(m+n),空間復(fù)雜度為O(MIN(m,n)?!驹u分說明】算法為8分,算法的時間復(fù)雜度和空間復(fù)雜度各占1分。2. 假設(shè)二叉樹b采用二叉鏈存儲結(jié)構(gòu),設(shè)計一個算法

14、void findparent(BTNode *b,ElemType x,BTNode *&p)求指定值為x的結(jié)點的雙親結(jié)點p,提示,根結(jié)點的雙親為NULL,若未找到這樣的結(jié)點,p亦為NULL。解:算法如下:void findparent(BTNode *b,ElemType x,BTNode *&p)if (b!=NULL)if (b-data=x) p=NULL;else if (b-lchild!=NULL & b-lchild-data=x)p=b;else if (b-rchild!=NULL & b-rchild-data=x)p=b;elsefindparent(b-lchild

15、,x,p);if (p=NULL)findparent(b-rchild,x,p);else p=NULL;【評分說明】本題有多種解法,相應(yīng)給分。3. 假設(shè)一個連通圖采用鄰接表G存儲結(jié)構(gòu)表示。設(shè)計一個算法,求起點u到終點v的經(jīng)過頂點k的所有路徑。解:算法如下:int visitedMAXV=0;/全局變量void PathAll(ALGraph *G,int u,int v,int k,int path,int d)/d是到當(dāng)前為止已走過的路徑長度,調(diào)用時初值為-1int m,i;ArcNode *p;visitedu=1;d+;/路徑長度增1pathd=u;/將當(dāng)前頂點添加到路徑中if (u

16、=v & In(path,d,k)=l)/輸出一條路徑printf( );for (i=0;iadjlistu.firstarc;/p指向頂點u的第一條弧的弧頭節(jié)點while (p!=NULL)m=p-adjvex;/m為u的鄰接點if (visitedm=0)/若該頂點未標(biāo)記訪問,則遞歸訪問之PathAll(G,m,v,l,path,d);p=p-nextarc;/找u的下一個鄰接點visitedu=0;/恢復(fù)環(huán)境:使該頂點可重新使用int In(int path,int d,int k)/判斷頂點k是否包含在路徑中int i;for (i=0;ichild=NULL) return 1;return count(b-child)+count(b-brother);說明:本題可以從鏈表的角度求解。(2)算法如下:int Average(TNode *b,char clas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論