版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)期末復(fù)習(xí)練習(xí)題答案(僅供參考)第一章 緒 論一、單選題1. A 2. C 3. B 4. C 5. D 6. B 二、填空題1. 集合結(jié)構(gòu)、線性結(jié)構(gòu)、樹型結(jié)構(gòu)、圖形結(jié)構(gòu) 2.順序、鏈?zhǔn)?3. 1:1、1:N、M:N 4.數(shù)據(jù)定義、操作聲明 5.引用形參(或指針形參 ) 6.引用類型 ( 或 指針類型 ) 7.實參、值 8.stdio.h、file.h 9.stdlib.h、rand( ) %21 10. sizeof(a)、a+i*sizeof(a0)、a+i11. 參數(shù)類型、數(shù)量、次序 12. 2、用戶自定義 13. = = 、ra 、rb 14. O(n)、O(m*n)15. n、
2、n(n+1)/2、O(n2) 16. O(n)第二章 線性表 一、單選題1. B 2. A 3. C 4. B 5. D 6. C二、填空題1.元素值、指針 2.( 38,56,25,60,42,74) 3. O(n)、O(1) 4.(1)、O(n) 5.i-1、i+1p->next 、ap.next 7.表頭 8.前驅(qū)、后繼 9.表尾、表頭 10HL->next = = NULL 、HL->next = = HL三、應(yīng)用題1.(1) ( 79 , 62 , 34 , 57 , 26 , 48 ) (2) ( 26 , 34 , 48 , 57 , 62 , 79 ) (3)
3、 ( 26, 34 , 39 , 48 , 57 , 62 )212,26,9,8,15,30,50)3(1) ElemType DMValue( List & L ) if ( ListEmpty(L) ) / 空線性表 cerr <<"List is Empty!"<<endl; exit(1);ElemType x; / x存放最小元素x = L.list0;int k = 0; / k存放最小元素的下標(biāo)for ( int i = 1; i<L.size; i+ ) / 查找最小元素 if ( L.listi < x ) x
4、 = L.listi ; k = i; L.listk = L.listL.size-1; / 最后一個元素填補(bǔ)最小元素位置L.size-; / 線性表長度減1return x; / 返回最小元素 2)ElemType Delete( List & L, int i ) if ( i<1 | i>L.size ) / 判斷i的合法性printf("Index is out range!n”);exit(1); ElemType x = L.listi-1; / 保存被刪除元素 for ( int j = i-1; j<L.size-1; j+ ) / 元素向
5、前移動 L.listj = L.listj+1; L.size-; / 長度減1 return x; / 返回被刪元素 (3)void Insert( List & L, int i, ElemType x ) if ( i<1 | i>L.size+1 ) / 判斷i的合法性printf("Index is out range!n");exit(1); if ( L.size = MaxSize ) / 判斷線性表滿 printf("List overflow!n");exit(1); for ( int j = L.size-1
6、; j>=i-1 ; j- ) / 元素后移,產(chǎn)生插入位置L.listj+1 = L.listj; L.listi-1 = x; / 元素插入 L.size+; / 長度加1 (4) void Delete( List & L, ElemType x ) int i = 0; while ( i<L.size ) if ( L.listi = x ) / 刪除x元素for ( int j = i+1; j<L.size; j+ ) L.listj-1 = L.listj;L.size-; else i+; / 尋找下一個x元素的位置 4(1)void Delete(
7、LNode * & HL, int i ) if ( i<1 | HL=NULL ) / 判斷i的合法性或空鏈表cerr <<"index is out range!"<<endl;exit(1); LNode * ap , * cp; ap = NULL ; cp = HL ; / cp指向當(dāng)前結(jié)點,ap指向其前驅(qū)結(jié)點 int j = 1; while ( cp != NULL ) / 查找第i個結(jié)點 if ( j = i ) / 找到第i個結(jié)點break; / cp指向的結(jié)點即為第i個結(jié)點 else / 繼續(xù)向后尋找ap = cp;
8、cp = cp->next;j+; if ( cp = NULL ) / 沒有找到第i個結(jié)點cerr <<"Index is out range!"<<endl;exit(1); if ( ap = NULL ) / 刪除第1個結(jié)點(即i=1) HL = HL->nextl else ap->next = cp->next; / 刪除第i個結(jié)點 delete cp; / 釋放被刪除結(jié)點的空間 (2)void Insert( LNode * & HL, const ElemType & x ) LNode * n
9、ewptr = new LNode; / 申請一個新結(jié)點 if ( newptr = NULL ) / 分配失敗cerr <<"Memory allocation failare!"<<endl;exit(1); newptr->data = x; if ( HL = NULL | x<HL->data ) / 空表 或 x小于表頭結(jié)點,newptr->next = HL; / 作為新表頭結(jié)點插入HL = newptr;return; / 查找插入位置 LNode * cp = HL->next; / 用cp指向當(dāng)前結(jié)點
10、(即待查結(jié)點) LNode * ap = HL; / 用ap作為指向當(dāng)前結(jié)點的前驅(qū)結(jié)點指針 while ( cp != NULL ) if ( x<cp->data) break; / 找到插入位置 else ap = cp; cp = cp->next; / 繼續(xù)查找插入位置 newptr->next = cp; ap->next = newptr; / 插入新結(jié)點 (3)ElemType MaxValue( LNode * HL ) if ( HL = NULL ) / 空表 cerr <<"Linked list is empty!&q
11、uot;<<endl; exit(1);ElemType max = HL->data;LNode * p = HL->next;while ( p != NULL ) / 尋找最大值 if ( max < p->data ) max = p->data; p = p->next;return max; (4)int Count( LNode * HL , ElemType x ) int n = 0; LNode * p = HL; while ( p != NULL ) if ( p->data = x ) n+; p = p->
12、next; return n; 第三章 稀疏矩陣和廣義表 一、單選題1. A 2. B二、填空題1.行號、列號、元素值 2.行號、列號 3.引用 (或指針) 4.等于 5.4 、5 6.列號、行號 7. 單、表 8. 括號 9. 3 10. 元素值、子表指針 11. true、NULL三、應(yīng)用題1(1) ( (1,2,4),(2,4,-3),(2,7,1),(3,1,8),(4,4,5),(5,2,-7),(5,6,2),(6,4,6) )12234556247142644-3185-726 (2) (3) (1,3,8),(2,1,4),(2,5,-7),(4,2,-3),(4,4,5),
13、(4,6,6),(6,5, 2),(7,2,1)122444673152465284-7-356212(1) A:長度:1 深度:2 (2) B:長度:3 深度:1 (3) C:長度:2 深度:3 (4) D:長度:2 深度:2 (5) E:長度:3 深度:3 (6) F:長度:1 深度:4第四章 棧和隊列 一、單選題1. A 2. B 3. C 4. A 5. B 6. B 7. D 8. D二、填空題1.隊尾、隊首 2.后進(jìn)先出(LIFO)、先進(jìn)先出(FIFO) 3.棧頂指針、存儲 4.棧頂元素、棧頂指針5. front = = rear 、(rear+1)%QueueMaxSize =
14、= front 6. -1 、StackMaxSize-17. ??铡⒖贞牎㈥犃兄挥幸粋€元素 8.新結(jié)點的指針域、棧頂指針 9.指針域、棧頂指針 10.隊尾指針、存儲 11.top = = 0 12.p->next = HS 、HS = p 13. HS = HS->next14. ( front = = rear ) && ( front <>NULL ) 15. 3 4 25 6 15 + - / 8 * +16. (24+8)*3/(4*(10-7) 、8三、應(yīng)用題 12 15 5 30 18四、編程題遞歸算法:long Fib( int n )
15、if ( n=1 | n=2 ) / 終止遞歸條件 return 1;else return Fib(n-1)+Fib(n-2);非遞歸算法:long Fib( int n ) int a , b , c; / c代表當(dāng)前項,a和b分別代表當(dāng)前項前面的第2項和第1項a = b = 1;if ( n = 1 | n = 2 ) return 1;else for ( int i = 3 ; i<=n ; i+ ) c = a+b; / 求當(dāng)前項 a = b; / 產(chǎn)生第2項 b = c; / 產(chǎn)生第1項 return c; / 返回所求的第n項 遞歸算法的時間復(fù)雜度為 O(2n),空間復(fù)雜
16、度為 O(n);非遞歸算法的時間復(fù)雜度為 O(n),空間復(fù)雜度為 O(1)。第五章 樹和二叉樹一、填空題1.n-1 2.5 、50 3. 6 4.31、21 5.10、4、3 6.2、1、1、6 7.B、I和J 8.6 9. 2i、2i+1、? i/2? 10.16 11.5、18 12.a、f、空結(jié)點(即無右孩子結(jié)點) 13. 4、2、314. a2*i、a2*i+1、ai/2 15. 2i-1、2j+1 16. A2*i+1、a2*i+2、ai/2 17.2n、n-1、n+1 18.10、5 19. abcdef、cbaedf、cbefda、abdcef 20. abecfhijgd、ab
17、cdefghij二、應(yīng)用題1void Request( int A , int n , int i ) if ( i>n ) cerr <<"編號為"<<i<<"的結(jié)點不存在!"<<endl; exit(1);cout <<"當(dāng)前結(jié)點為"<<Ai<<endl;int j = i/2; / 下標(biāo)為j的結(jié)點是下標(biāo)為i結(jié)點的雙親if ( j>0 ) cout <<"雙親:"<<Aj<<end
18、l;else cout <<"樹根沒有雙親結(jié)點!"<<endl;if ( 2*i < n ) cout <<"左孩子:"<<A2*i<<endl; cout <<"右孩子:"<<A2*i+1<<endl;else if ( 2*i = n ) cout <<"左孩子:"<<A2*i<<endl; cout <<"無右孩子!"<<endl
19、;else cout <<"無孩子!"<<endl; 2void Count( BTreeNode * BT , int & C1 , int & C2 ) if ( BT != NULL ) C1+; / 統(tǒng)計所有結(jié)點數(shù) if ( BT->left = NULL && BT->right = NULL ) C2+; / 統(tǒng)計葉子結(jié)點數(shù) Count( BT->left , C1 , C2 ); Count( BT->right , C1 , C2 ); 3(1) abecfgkdhilmj (2
20、) abcdefghijklm (3) 第六章 二叉樹的應(yīng)用一、單選題1. C 2. B 3. D 4. C 5. A 6. D二、填空題1. 小于、大于等于2. 按升序排列的有序序列3. 找到、左子樹、右子樹4. 2i+1、2i+25. 最小值、最大值6. 堆尾、堆頂、向下三、應(yīng)用題 1. 2. 初態(tài):空堆 ( ) 插入38后:( 38 ) 插入64后:( 38 , 64 ) 插入52后:( 38 , 64 , 52 ) 插入15后:( 15 , 38 , 52 , 64 ) 插入73后:( 15 , 38 , 52 , 64 , 73 ) 插入40后:( 15 , 38 , 40 , 64
21、 , 73 , 52 ) 插入48后:( 15 , 38 , 40 , 64 , 73 , 52 , 48 ) 插入55后:( 15 , 38 , 40 , 55 , 73 ,52 , 48 , 64 ) 插入26后:( 15 , 26 , 40 , 38 , 73 ,52 , 48 , 64 , 55 ) 插入12后:( 12 , 15 , 40 , 38 , 26 ,52 , 48 , 64 , 55 ,73 ) 3. 初態(tài)堆:( 12 , 15 , 40 , 38 , 26 ,52 , 48 , 64 ) 刪除第1個元素后堆:( 15 , 26 , 40 , 38 , 64 , 52 ,
22、 48 ) 刪除第2個元素后堆:( 26 , 38 , 40 , 48 , 64 , 52 ) 刪除第3個元素后堆:( 38 , 48 , 40 , 52 , 64 ) 刪除第4個元素后堆:( 40 , 48 , 64 , 52 ) 4. 哈夫曼樹: WPL = 3*4+7*3+8*3+2*4+6*3+10*2+14*2 = 131四、算法設(shè)計 1bool Find( BTreeNode * BST , ElemType & item ) while ( BST != NULL ) if ( item = BT->data ) / 找到item = BST->data;re
23、turn true; else if (item<BST->data) BST=BST->left; / 轉(zhuǎn)左子樹查找else BST=BST->right; / 轉(zhuǎn)右子樹查找 return false; / 沒有找到 2( i-1)/2 HBT.heapi = HBT.heapj i = j第七章 圖一、填空題1.2 2、n(n-1)/2、n(n-1)3、n-1 4、鄰接矩陣、鄰接表、邊集數(shù)組 5、n*n ( 或 n行n列 ) 6、e、2e 7、出邊、入邊 8、e、e 9、O(n)、O(e/n)、O(e) 10、O(n2)、O(n)+O(e)、O(e)+O(n)11、
24、O(n2)、O(e) 12、014253、012345 13、ABCDE、ABCED 14、22 15、(0,1)5,(1,3)3,(3,2)6,(1,4)8 16、(1,3)3,(0,1)5,(3,2)6,(1,4)817、鏈棧 18、n、n-1二、應(yīng)用題 1 (1) 采用鄰接矩陣表示得到的頂點序列如下表所示:圖深度優(yōu)先序列廣度優(yōu)先序列G40 1 2 8 3 4 5 6 7 90 1 4 2 7 3 8 6 5 9G50 1 2 5 8 4 7 3 60 1 3 4 2 6 7 5 8 (2) 采用鄰接表表示得到的頂點序列如下表所示:圖深度優(yōu)先序列廣度優(yōu)先序列G40 4 3 8 9 5 6
25、7 1 20 4 1 3 7 2 8 6 9 5G50 4 7 5 8 3 6 1 20 4 3 1 7 5 6 2 8 2唯一的一種拓?fù)湫蛄袨椋? 4 0 2 3 5 7 6 8 9第八章 查找一、填空題 1、(n+1)/2、O(n) 2、見p264公式ASL=、O(log2n) 3、37/12 4、順序、有序 5、1、36.二叉搜索樹、理想平衡樹7.6、31、19 8、索引、開始地址9、(12,63,36)、(55,40,82)、(23,74)10、3、3、2 11、哈希 12、鏈接 13、2、7/5 14、5 15、開放定址、鏈接 16、3、2二、應(yīng)用題 1(1) 順序查找: ASL =
26、 ( 1+2+3+25)/25 = 13 (2) 二分查找: ASL = ( 1+2*2+4*3+8*4+10*5 )/25 = 99/25 = 3.96 ( 參見上圖的二分查找樹 ) 2哈希函數(shù):H(K) = k % m 其中依題意得 m = 13 H( 32 ) = 32 % 13 = 6 H( 75 ) = 75 % 13 = 10 H( 29 ) = 29 % 13 = 3 H( 63 ) = 63 % 13 = 11 H( 48 ) = 48 % 13 = 9H( 94 ) = 94 % 13 = 3 (沖突) 設(shè) d0 = H(K) = H(94) = 3 d1 = ( d0+1
27、) % m = (3+1)%13 = 4 H( 25 ) = 25 % 13 = 12 H( 46 ) = 46 % 13 = 7 H( 18 ) = 18 % 13 = 5 H( 70 ) = 70 % 13 = 5 (沖突) 設(shè) d0 = H(K) = H(70) = 5 d1 = ( d0+1 ) % m = (5+1)%13 = 6 (沖突) d2 = ( d1+1 ) % m = (6+1)%13 = 7 (沖突) d3 = ( d2+1 ) % m = (7+1)%13 = 8 ASL = ( 8*1+1*2+1*4 )/10 = 1.4 3哈希函數(shù):H(K) = k % m 其中
28、依題意得 m = 11H( 32 ) = 32 % 11 = 10H( 75 ) = 75 % 11 = 9H( 29 ) = 29 % 11 = 7 H( 63 ) = 63 % 11 = 8 H( 48 ) = 48 % 11 = 4H( 94 ) = 94 % 11 = 6H( 25 ) = 25 % 11 = 3 H( 46 ) = 46 % 11 = 2 H( 18 ) = 18 % 11 = 7 H( 70 ) = 70 % 11 = 4 ASL = ( 8*1+2*2 )/10 = 1.2三、算法設(shè)計 遞歸算法:int Binsch( ElemType A , int low ,
29、 int high , KeyType K ) if ( low <= hight ) int mid = (low+high)/2; if ( K = Amid.key ) return mid; / 查找成功,返回元素的下標(biāo) else if ( K <Amid.key ) return Binsch( A , low , mid-1 , K ); / 在左子表上繼續(xù)查找 else return Binsch( A , mid+1 , high , K ); / 在右子表上繼續(xù)查找 else return -1; / 查找失敗,返回-1 非遞歸算法:int Binsch( Ele
30、mType A , int n , KeyType K ) int low = 0 , high = n-1; while ( low <= hight ) int mid = (low+high)/2; if ( K = Amid.key ) return mid; / 查找成功,返回元素的下標(biāo) else if ( K <Amid.key ) high = mid-1; / 在左子表上繼續(xù)查找 else low = mid+1; / 在右子表上繼續(xù)查找 return -1; / 查找失敗,返回-1第九章 排序一、填空題1、插入、堆 2、快速、歸并 3、O(n2)、O(n) 4、?
31、n/2?-1、n-1 5、O(log2n)、O(nlog2n) 6、84 79 56 30 40 46 7、O(nlog2n)、O(n2) 8、O(log2n)、O(n) 9、兩端、中間10、38 40 46 56 79 80 11、4 4 12、 élog2nù 或 élog2nù+113、O(n)、O(n log2n)、O(n) 14、6、4、8 15、 38 46 56 79 40 80二、應(yīng)用題 (1) ( 46 ) ( 74 16 53 14 26 40 38 86 65 27 34 ) 初態(tài) ( 46 74 ) ( 16 53 14 26 4
32、0 38 86 65 27 34 ) ( 16 46 74 ) ( 53 14 26 40 38 86 65 27 34 ) ( 16 46 53 74 ) ( 14 26 40 38 86 65 27 34 ) ( 14 16 46 53 74 ) ( 26 40 38 86 65 27 34 ) ( 14 16 26 46 53 74 ) ( 40 38 86 65 27 34 ) ( 14 16 26 40 46 53 74 ) ( 38 86 65 27 34 ) ( 14 16 26 38 40 46 53 74 ) ( 86 65 27 34 ) ( 14 16 26 38 40
33、46 53 74 86 ) ( 65 27 34 ) ( 14 16 26 38 40 46 53 65 74 86 ) ( 27 34 ) ( 14 16 26 27 38 40 46 53 65 74 86 ) ( 34 ) ( 14 16 26 27 34 38 40 46 53 65 74 86 ) (2) ( 46 74 16 53 14 26 40 38 86 65 27 34 ) 初態(tài) ( 14 )( 74 16 53 46 26 40 38 86 65 27 34 ) ( 14 16 )( 74 53 46 26 40 38 86 65 27 34 ) ( 14 16 26 )
34、( 53 46 74 40 38 86 65 27 34 ) ( 14 16 26 27 )( 46 74 40 38 86 65 53 34 ) ( 14 16 26 27 34 )( 74 40 38 86 65 53 46 ) ( 14 16 26 27 34 38 )( 40 74 86 65 53 46 ) ( 14 16 26 27 34 38 40 )( 74 86 65 53 46 ) ( 14 16 26 27 34 38 40 46 )( 86 65 53 74 ) ( 14 16 26 27 34 38 40 46 53 )( 65 86 74 ) ( 14 16 26
35、27 34 38 40 46 53 65 )( 86 74 ) ( 14 16 26 27 34 38 40 46 53 65 74 86 ) (3) ( 46 74 16 53 14 26 40 38 86 65 27 34 ) 初態(tài) 構(gòu)造初始堆過程:(構(gòu)造大根堆) ( 46 74 16 53 14 34 40 38 86 65 27 26 ) ( 46 74 16 53 65 34 40 38 86 14 27 26 ) ( 46 74 16 86 65 34 40 38 53 14 27 26 ) ( 46 74 40 86 65 34 16 38 53 14 27 26 ) ( 46 86 40 74 65 34 16 38 53 14 27 26
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《醫(yī)學(xué)統(tǒng)計學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《結(jié)構(gòu)試驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《建筑結(jié)構(gòu)抗震設(shè)計》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《走近科技》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《市場調(diào)查》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《經(jīng)貿(mào)翻譯》2023-2024學(xué)年第一學(xué)期期末試卷
- 2018年四川內(nèi)江中考滿分作文《我心中的英雄》15
- 沈陽理工大學(xué)《產(chǎn)品交互設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州市合同監(jiān)督條例
- 韓文 法律代理合同范本
- 招標(biāo)代理應(yīng)急響應(yīng)預(yù)案
- 國開2023秋《人文英語4》期末復(fù)習(xí)寫作練習(xí)參考答案
- GB/Z 43410-2023無損檢測自動超聲檢測系統(tǒng)選擇和應(yīng)用
- 四級高頻詞匯
- 央國企信創(chuàng)化與數(shù)字化轉(zhuǎn)型規(guī)劃實施
- 1.四方埔社區(qū)服務(wù)中心場地管理制度
- 智慧城市治理CIM平臺建設(shè)方案
- 心肺復(fù)蘇后疾病的病理生理和預(yù)后
- 《餐飲服務(wù)的特點》課件
- 廣州市社會保險工傷待遇申請表
- 少兒科學(xué)實驗-直升飛機(jī)
評論
0/150
提交評論