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

下載本文檔

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

文檔簡介

1、【精品文檔】如有侵權(quán),請聯(lián)系網(wǎng)站刪除,僅供學(xué)習(xí)與交流數(shù)據(jù)結(jié)構(gòu)考試題(三).精品文檔.(一)一、 單選題(每題 2 分,共20分)1. 1. 對一個算法的評價,不包括如下(B )方面的內(nèi)容。 A健壯性和可讀性 B并行性 C正確性 D時空復(fù)雜度2. 2. 在帶有頭結(jié)點的單鏈表HL中,要向表頭插入一個由指針p指向的結(jié)點,則執(zhí)行( A )。 A. p-next=HL-next; HL-next=p; B. p-next=HL; HL=p; C. p-next=HL; p=HL; D. HL=p; p-next=HL;3. 3. 對線性表,在下列哪種情況下應(yīng)當(dāng)采用鏈表表示?( B ) A.經(jīng)常需要隨機地

2、存取元素 B.經(jīng)常需要進行插入和刪除操作 C.表中元素需要占據(jù)一片連續(xù)的存儲空間 D.表中元素的個數(shù)不變4. 4. 一個棧的輸入序列為1 2 3,則下列序列中不可能是棧的輸出序列的是( C ) A. 2 3 1B. 3 2 1 C. 3 1 2 D. 1 2 35. 5. AOV網(wǎng)是一種( D )。 A有向圖 B無向圖 C無向無環(huán)圖 D有向無環(huán)圖6. 6. 采用開放定址法處理散列表的沖突時,其平均查找長度( S )。A低于鏈接法處理沖突 B. 高于鏈接法處理沖突 C與鏈接法處理沖突相同 D高于二分查找7. 7. 若需要利用形參直接訪問實參時,應(yīng)將形參變量說明為( D )參數(shù)。A值 B函數(shù) C指

3、針 D引用8. 8. 在稀疏矩陣的帶行指針向量的鏈接存儲中,每個單鏈表中的結(jié)點都具有相同的( A)。A行號 B列號 C元素值 D非零元素個數(shù)9. 9. 快速排序在最壞情況下的時間復(fù)雜度為( D )。AO(log2n) BO(nlog2n) C0(n) D0(n2)10. 10. 從二叉搜索樹中查找一個元素時,其時間復(fù)雜度大致為( C )。 A. O(n) B. O(1) C. O(log2n) D. O(n2)二、 二、 運算題(每題 6 分,共24分)1. 1. 數(shù)據(jù)結(jié)構(gòu)是指數(shù)據(jù)及其相互之間的_。當(dāng)結(jié)點之間存在M對N(M:N)的聯(lián)系時,稱這種結(jié)構(gòu)為_。2. 2. 隊列的插入操作是在隊列的_尾

4、_進行,刪除操作是在隊列的_首_進行。3. 3. 當(dāng)用長度為N的數(shù)組順序存儲一個棧時,假定用top=N表示棧空,則表示棧滿的條件是_top=0_(要超出才為滿)_。4. 4. 對于一個長度為n的單鏈存儲的線性表,在表頭插入元素的時間復(fù)雜度為_,在表尾插入元素的時間復(fù)雜度為_。5. 5. 設(shè)W為一個二維數(shù)組,其每個數(shù)據(jù)元素占用4個字節(jié),行下標(biāo)i從0到7 ,列下標(biāo)j從0到3 ,則二維數(shù)組W的數(shù)據(jù)元素共占用_個字節(jié)。W中第6 行的元素和第4 列的元素共占用_個字節(jié)。若按行順序存放二維數(shù)組W,其起始地址為100,則二維數(shù)組元素W6,3的起始地址為_。6. 6. 廣義表A= (a,(a,b),(a,b)

5、,c),則它的深度為_,它的長度為_。7. 7. 二叉樹是指度為2的_樹。一棵結(jié)點數(shù)為N的二叉樹,其所有結(jié)點的度的總和是_。8. 8. 對一棵二叉搜索樹進行中序遍歷時,得到的結(jié)點序列是一個_。對一棵由算術(shù)表達式組成的二叉語法樹進行后序遍歷得到的結(jié)點序列是該算術(shù)表達式的_。9. 9. 對于一棵具有n個結(jié)點的二叉樹,用二叉鏈表存儲時,其指針總數(shù)為_個,其中_個用于指向孩子,_個指針是空閑的。10. 10. 若對一棵完全二叉樹從0開始進行結(jié)點的編號,并按此編號把它順序存儲到一維數(shù)組A中,即編號為0的結(jié)點存儲到A0中。其余類推,則A i 元素的左孩子元素為_,右孩子元素為_,雙親元素為_。11. 11

6、. 在線性表的散列存儲中,處理沖突的常用方法有_和_兩種。12. 12. 當(dāng)待排序的記錄數(shù)較大,排序碼較隨機且對穩(wěn)定性不作要求時,宜采用_排序;當(dāng)待排序的記錄數(shù)較大,存儲空間允許且要求排序是穩(wěn)定時,宜采用_排序。一、 填空題(每空1分,共26分)1. 1. 聯(lián)系 圖(或圖結(jié)構(gòu))2. 2. 尾 首3. 3. top=04. 4. O(1) O(n)5. 5. 128 44 1086. 6. 3 3 7. 7. 65515132-145-2515637 圖7有序 n-18. 8. 有序序列 后綴表達式(或逆波蘭式)9. 9. 2n n-1 n+110. 10. 2i+1 2i+2 (i-1)/21

7、1. 11. 開放定址法 鏈接法12. 12. 快速 歸并三、 三、 運算題(每題6分,共24分)1. 1. 已知一個65稀疏矩陣如下所示,試:(1) (1) 寫出它的三元組線性表;(2) (2) 給出三元組線性表的順序存儲表示。2. 2. 設(shè)有一個輸入數(shù)據(jù)的序列是 46, 25, 78, 62, 12, 80 , 試畫出從空樹起,逐個輸入各個數(shù)據(jù)而生成的二叉搜索樹。3. 3. 對于圖6所示的有向圖若存儲它采用鄰接表,并且每個頂點鄰接表中的邊結(jié)點都是按照終點序號從小到大的次序鏈接的,試寫出:(1) 從頂點出發(fā)進行深度優(yōu)先搜索所得到的深度優(yōu)先生成樹;(2) 從頂點出發(fā)進行廣度優(yōu)先搜索所得到的廣度

8、優(yōu)先生成樹; 4. 4. 已知一個圖的頂點集V和邊集E分別為: 圖6 V=1,2,3,4,5,6,7;E=,;若存儲它采用鄰接表,并且每個頂點鄰接表中的邊結(jié)點都是按照終點序號從小到大的次序鏈接的,按主教材中介紹的拓樸排序算法進行排序,試給出得到的拓樸排序的序列.二、 三、 運算題(每題6分,共24分)1. 1. (1) (1,5,1),(3,2,-1),(4,5,-2),(5,1,5),(6,3,7) (3分)(2) 三元組線性表的順序存儲表示如圖7示。2. 2. 圖8如圖8所示。3. 3. DFS: BFS: 4. 拓樸排序為: 4 3 6 5 7 2 1 四、 四、 閱讀算法(每題7分,共

9、14分)1. 1. int Prime(int n) int i=1; int x=(int) sqrt(n); while (+ix) return 1; else return 0;(1) (1) 指出該算法的功能;(2) (2) 該算法的時間復(fù)雜度是多少?2. 2. 寫出下述算法的功能: void AJ(adjlist GL, int i, int n) Queue Q; InitQueue(Q); coutiadjvex; if(!visitedj) coutjnext; 五、 五、 算法填空(共8分)如下為二分查找的非遞歸算法,試將其填寫完整。Int Binsch(ElemType

10、A ,int n,KeyType K)int low=0;int high=n-1;while (low=high)int mid=_;if (K=Amid.key) return mid; /查找成功,返回元素的下標(biāo) else if (Kmid.key) _; /在左子表上繼續(xù)查找 else _; /在右子表上繼續(xù)查找return -1; /查找失敗,返回-1六、 六、 編寫算法(共8分)HL是單鏈表的頭指針,試寫出刪除頭結(jié)點的算法。ElemType DeleFront(LNode * & HL)參考答案四、 閱讀算法(每題7分,共14分)1. 1. (1) 判斷n是否是素數(shù)(或質(zhì)數(shù)) (2

11、)O()2. 2. 功能為:從初始點vi出發(fā)廣度優(yōu)先搜索由鄰接表GL所表示的圖。五、 算法填空(8 分) (low+high)/2 high=mid-1 low=mid+1 六、 編寫算法(8分)ElemType DeleFront(LNode * & HL)if (HL=NULL) cerr空表next;ElemType temp=p-data;delete p;return temp;(二)一、 一、 單選題(每題 2 分,共20分)1. 1. 棧和隊列的共同特點是( A )。A.只允許在端點處插入和刪除元素B.都是先進后出 C.都是先進先出D.沒有共同點 2. 2. 用鏈接方式存儲的隊列

12、,在進行插入運算時( D ). A. 僅修改頭指針 B. 頭、尾指針都要修改 C. 僅修改尾指針 D.頭、尾指針可能都要修改3. 3. 以下數(shù)據(jù)結(jié)構(gòu)中哪一個是非線性結(jié)構(gòu)?( C ) A. 隊列 B. 棧 C. 線性表 D. 二叉樹4. 4. 設(shè)有一個二維數(shù)組Amn,假設(shè)A00存放位置在644(10),A22存放位置在676(10),每個元素占一個空間,問A33(10)存放在什么位置?腳注(10)表示用10進制表示。C A688 B678 C692 D6965. 5. 樹最適合用來表示( C )。 A.有序數(shù)據(jù)元素 B.無序數(shù)據(jù)元素 C.元素之間具有分支層次關(guān)系的數(shù)據(jù) D.元素之間無聯(lián)系的數(shù)據(jù)6

13、. 6. 二叉樹的第k層的結(jié)點數(shù)最多為( D ). A2k-1 B.2K+1 C.2K-1 D. 2k-17. 7. 若有18個元素的有序表存放在一維數(shù)組A19中,第一個元素放A1中,現(xiàn)進行二分查找,則查找A3的比較序列的下標(biāo)依次為( D ) A. 1,2,3B. 9,5,2,3 C. 9,5,3D. 9,4,2,38. 8. 對n個記錄的文件進行快速排序,所需要的輔助存儲空間大致為C A. O(1) B. O(n) C. O(1og2n) D. O(n2)9. 9. 對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)=K %9作為散列函數(shù),則散列地址為1

14、的元素有( D )個, A1 B2 C3 D410. 10. 設(shè)有6個結(jié)點的無向圖,該圖至少應(yīng)有( A )條邊才能確保是一個連通圖。A.5 B.6 C.7 D.8二、 二、 填空題(每空1分,共26分)1. 1. 通常從四個方面評價算法的質(zhì)量:_、_、_和_。2. 2. 一個算法的時間復(fù)雜度為(n3+n2log2n+14n)/n2,其數(shù)量級表示為_。3. 3. 假定一棵樹的廣義表表示為A(C,D(E,F(xiàn),G),H(I,J),則樹中所含的結(jié)點數(shù)為_個,樹的深度為_,樹的度為_。4. 4. 后綴算式9 2 3 +- 10 2 / -的值為_。中綴算式(3+4X)-2Y/3對應(yīng)的后綴算式為_。5.

15、5. 若用鏈表存儲一棵二叉樹時,每個結(jié)點除數(shù)據(jù)域外,還有指向左孩子和右孩子的兩個指針。在這種存儲結(jié)構(gòu)中,n個結(jié)點的二叉樹共有_個指針域,其中有_個指針域是存放了地址,有_個指針是空指針。6. 6. 對于一個具有n個頂點和e條邊的有向圖和無向圖,在其對應(yīng)的鄰接表中,所含邊結(jié)點分別有_個和_個。7. 7. AOV網(wǎng)是一種_的圖。8. 8. 在一個具有n個頂點的無向完全圖中,包含有_條邊,在一個具有n個頂點的有向完全圖中,包含有_條邊。9. 9. 假定一個線性表為(12,23,74,55,63,40),若按Key % 4條件進行劃分,使得同一余數(shù)的元素成為一個子表,則得到的四個子表分別為_、_、_和

16、_。10. 10. 向一棵B_樹插入元素的過程中,若最終引起樹根結(jié)點的分裂,則新樹比原樹的高度_。11. 11. 在堆排序的過程中,對任一分支結(jié)點進行篩運算的時間復(fù)雜度為_,整個堆排序過程的時間復(fù)雜度為_。12. 12. 在快速排序、堆排序、歸并排序中,_排序是穩(wěn)定的。 填空題(每空1分,共26分)1. 1. 正確性 易讀性 強壯性 高效率2. 2. O(n)3. 3. 9 3 34. 4. -1 3 4 X * + 2 Y * 3 / -5. 5. 2n n-1 n+16. 6. e 2e7. 7. 有向無回路8. 8. n(n-1)/2 n(n-1)9. 9. (12,40) ( ) (7

17、4) (23,55,63)10. 10. 增加111. 11. O(log2n) O(nlog2n)12. 12. 歸并三、 三、 運算題(每題 6 分,共24分)1. 1. 在如下數(shù)組A中鏈接存儲了一個線性表,表頭指針為A 0.next,試寫出該線性表。 A 0 1 2 3 4 5 6 7 data605078903440next35720412. 2. 圖10請畫出圖10的鄰接矩陣和鄰接表。3. 3. 已知一個圖的頂點集V和邊集E分別為: V=1,2,3,4,5,6,7; E=(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)

18、9,(4,6)4,(4,7)20,(5,6)18,(6,7)25; 用克魯斯卡爾算法得到最小生成樹,試寫出在最小生成樹中依次得到的各條邊。4. 4. 畫出向小根堆中加入數(shù)據(jù)4, 2, 5, 8, 3時,每加入一個數(shù)據(jù)后堆的變化。四、 四、 閱讀算法(每題7分,共14分)1. 1. LinkList mynote(LinkList L) /L是不帶頭結(jié)點的單鏈表的頭指針 if(L&L-next) q=L;L=Lnext;p=L; S1: while(pnext) p=pnext; S2: pnext=q;qnext=NULL; return L; 請回答下列問題: (1)說明語句S1的功能; (

19、2)說明語句組S2的功能; (3)設(shè)鏈表表示的線性表為(a1,a2, ,an),寫出算法執(zhí)行后的返回值所表示的線性表。2. 2. void ABC(BTNode * BT) if BT ABC (BT-left); ABC (BT-right); coutdatadata) item=BST-data;/查找成功 return _; else if(itemdata) return Find(_,item); else return Find(_,item); /if六、 六、 編寫算法(共8分)統(tǒng)計出單鏈表HL中結(jié)點的值等于給定值X的結(jié)點數(shù)。 int CountX(LNode* HL,Ele

20、mType x)參考答案三、 運算題(每題6分,共24分)1. 1. 線性表為:(78,50,40,60,34,90)2. 2. 鄰接矩陣: 鄰接表如圖11所示:圖113. 3. 用克魯斯卡爾算法得到的最小生成樹為: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204. 4. 見圖124444422255285283452843圖12二、 四、 閱讀算法(每題7分,共14分)1. 1. (1)查詢鏈表的尾結(jié)點(2)將第一個結(jié)點鏈接到鏈表的尾部,作為新的尾結(jié)點 (3)返回的線性表為(a2,a3,an,a1) 2. 2. 遞歸地后序遍歷鏈?zhǔn)酱鎯Φ亩?/p>

21、樹。三、 五、 算法填空(每空2分,共8 分)true BST-left BST-right 四、 六、 編寫算法(8分)int CountX(LNode* HL,ElemType x) int i=0; LNode* p=HL;/i為計數(shù)器 while(p!=NULL) if (P-data=x) i+; p=p-next; /while, 出循環(huán)時i中的值即為x結(jié)點個數(shù) return i; /CountX(三)一、 單選題(每小題2分,共8分)1、 1、在一個長度為n的順序線性表中順序查找值為x的元素時,查找成功時的平均查找長度(即x與元素的平均比較次數(shù),假定查找每個元素的概率都相等)為

22、( C)。A n B n/2 C (n+1)/2 D (n-1)/22、 2、在一個單鏈表中,若q所指結(jié)點是p所指結(jié)點的前驅(qū)結(jié)點,若在q與p之間插入一個s所指的結(jié)點,則執(zhí)行( D )。 A slink=plink; plink=s; B plink=s; slink=q; C plink=slink; slink=p; D q link=s; slink =p;3、 3、 棧的插入和刪除操作在( A)進行。A 棧頂 B 棧底 C 任意位置 D 指定位置4、 4、 由權(quán)值分別為11,8,6,2,5的葉子結(jié)點生成一棵哈夫曼樹,它的帶權(quán)路徑長度為( B) A 24 B 71 C 48 D 53二、

23、二、 填空題(每空1分,共32分)1、 1、數(shù)據(jù)的邏輯結(jié)構(gòu)被分為_、 _ 、_和_四種。2、 2、一種抽象數(shù)據(jù)類型包括_和_兩個部分。3、 3、在下面的數(shù)組a中鏈接存儲著一個線性表,表頭指針為ao.next,則該線性表為_。 a 0 1 2 3 4 5 6 7 8 60 56 42 38 74 25 4 3 7 6 2 0 1datanext4、 4、在以HL為表頭指針的帶表頭附加結(jié)點的單鏈表和循環(huán)單鏈表中,判斷鏈表為空的條件分別為_和_。5、 5、用具有n個元素的一維數(shù)組存儲一個循環(huán)隊列,則其隊首指針總是指向隊首元素的_,該循環(huán)隊列的最大長度為_。6、 6、當(dāng)堆棧采用順序存儲結(jié)構(gòu)時,棧頂元素

24、的值可用表示;當(dāng)堆棧采用鏈接存儲結(jié)構(gòu)時,棧頂元素的值可用_表示。7、 7、一棵高度為5的二叉樹中最少含有_個結(jié)點,最多含有_個結(jié)點;一棵高度為5的理想平衡樹中,最少含有_個結(jié)點,最多含有_個結(jié)點。8、 8、在圖的鄰接表中,每個結(jié)點被稱為_,通常它包含三個域:一是_;二是_;三是_。9、 9、在一個索引文件的索引表中,每個索引項包含對應(yīng)記錄的_和_兩項數(shù)據(jù)。10、 10、 假定一棵樹的廣義表表示為A(B(C,D(E,F(xiàn),G),H(I,J),則樹中所含的結(jié)點數(shù)為_個,樹的深度為_,樹的度為_, 結(jié)點H的雙親結(jié)點為_,孩子結(jié)點為_ 。11、 11、 在堆排序的過程中,對任一分支結(jié)點進行篩運算的時間復(fù)

25、雜度為_,整個堆排序過程的時間復(fù)雜度為_。12、 12、 在對m階的B_樹插入元素的過程中,每向一個結(jié)點插入一個索引項(葉子結(jié)點中的索引項為關(guān)鍵字和空指針)后,若該結(jié)點的索引項數(shù)等于_個,則必須把它分裂為_個結(jié)點。二、填空題(每空1分,共32分)1: 集合、線性、樹、圖;2: 數(shù)據(jù)描述、操作聲名;3: (38,56,25,60,42,74);4: HLnext =NULL; HL=HLnext;5: 前一個位置; n-1;6: S.stack S.top; HSdata;7: 5 318: 邊結(jié)點、鄰接點域、權(quán)域、鏈域;9: 索引值域、開始位置域;10: 10、3、3、B、I和J;11: O(

26、log2n)、O(nlog2n);12: m 、 m - 1三、 三、 運算題(每小題6分,共24分)1、 1、已知一組記錄的排序碼為(46,79,56,38,40,80, 95,24),寫出對其進行快速排序的每一次劃分結(jié)果。2、 2、一個線性表為B=(12,23,45,57,20,03,78,31,15,36),設(shè)散列表為HT0.12,散列函數(shù)為H(key)= key % 13并用線性探查法解決沖突,請畫出散列表,并計算等概率情況下查找成功的平均查找長度。3、 3、已知一棵二叉樹的前序遍歷的結(jié)果序列是ABECKFGHIJ,中序遍歷的結(jié)果是EBCDAFHIGJ,試寫出這棵二叉樹的后序遍歷結(jié)果。

27、4、 4、已知一個圖的頂點集V各邊集G如下:V = 0,1,2,3,4,5,6,7,8,9;E = (0,1),(0,4),(1,2),(1,7),(2,8),(3,4),(3 ,8),(5,6),(5,8),(5,9),(6,7),(7,8),(8,9)當(dāng)它用鄰接矩陣表示和鄰接表表示時,分別寫出從頂點V0出發(fā)按深度優(yōu)先搜索遍歷得到的頂點序列和按廣度優(yōu)先搜索遍歷等到的頂點序列。假定每個頂點鄰接表中的結(jié)點是按頂點序號從大到小的次序鏈接的。圖深度優(yōu)先序列廣度優(yōu)先序列鄰接矩陣表示時鄰接表表示時四、 四、 閱讀算法,回答問題(每小題8分,共16分)1、假定從鍵盤上輸入一批整數(shù),依次為:78 63 45

28、 30 91 34 1,請寫出輸出結(jié)果。# include # include consst int stackmaxsize = 30;typedef int elemtype;struct stack elemtype stack stackmaxsize; int top;# include “stack.h”Void main ( ) stack a; initstack(a); int x; cin x; while (x! = -1) push (a, x ); cin x;while (!stackempty (a) cout pop (a) ” ;cout end1;該算法的輸出結(jié)果為:_.2、閱讀以下二叉樹操作算法,指出該算法的功能。Template void BinTree :unknown (BinTreeNode*t) BinTreeNode *p =t, *temp; if (p!=NULL) temp = pleftchild; pleftchild = prightchild; prightchild = temp; unknown(pleftchild); undnown(prightchild);該算法的功能是:_五、 五、 算法填空,在畫有橫線的地方填寫合適的內(nèi)容(10分)對順序存儲的有序表進行二分查找的遞歸算

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論