版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)第二章習(xí)題解答一、單選題 1在一個長度為n的順序存儲線性表中,向第i個元素(1in+1)之前插入一個新元素時,需要從后向前依次后移 (B) 個元素。 A、n-i B、n-i+1 C、n-i-1
2、160; D、i 2在一個長度為n的順序存儲線性表中,刪除第i個元素(1in+1)時,需要從前向后依次前移 (A)個元素。 A、n-i B、n-i+1 C、n-i-1 &
3、#160; D、i 3. 在一個長度為n的線性表中順序查找值為x的元素時,在等概率情況下,查找成功時 的平均查找長度(即需要比較的元素個數(shù))為( C )。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 4在一個長度為 n的線性表中,刪除值為x的元素時需要比較元素和移動元素的總次 數(shù)為(C )。 A. (n+1)/2 B. n/2 C. n D. n+1 5. 在一個順序表的表尾插入一個元素的時間復(fù)雜度為(B )。 A. O(n) B. O(1) C. O(n*n) D. O(log2n) 6.若一個結(jié)點(diǎn)的引用為p,它的前驅(qū)結(jié)點(diǎn)的
4、引用為q,則刪除p的后繼結(jié)點(diǎn)的操作為(B )。 A. p=p.next.next B. p.next=p.next.next C. q.next=p.next
5、 D. q.next=q.next.next 8. 假定一個多項式中x的最高次冪為n,則在保存所有系數(shù)項的線性表表示中,其線性 表長度為(A )。 A. n+1 B. n C. n-1 D. n+2 二、填空題 1對于當(dāng)前長度為n的線性表,共包含有_多個插入元素的位置,共包含有 _多個刪除元素的位置。(答案n+1 n) 2若經(jīng)常需要對線性表進(jìn)行表尾插入和刪除運(yùn)算,則最好采用_存儲結(jié)構(gòu),若經(jīng) 常需要對線性表進(jìn)行表頭插入和刪除運(yùn)算,則最好采用_存儲結(jié)構(gòu)。
6、0;(答案:順序 鏈?zhǔn)剑?由n個元素生成一個順序表,若每次都調(diào)用插入算法把一個元素插入到表頭,則整個 算法的時間復(fù)雜度為_,若每次都調(diào)用插入算法把一個元素插入到表尾,則整個算法 的時間復(fù)雜度為_。 (答案: O(n) O(n)4由n個元素生成一個單鏈表,若每次都調(diào)用插入算法把一個元素插入到表頭,則整個 算法的時間復(fù)雜度為_,若每次都調(diào)用插入算法把一個元素插入到表尾,則整個算法 的時間復(fù)雜度為_。 (答案: O(1) O(1)5. 對于一個長度為n的順序存儲的線性表,在表頭插入元素的時間復(fù)雜度為_, 在
7、表尾插入元素的時間復(fù)雜度為_。 (答案:O(n),O(1)6. 對于一個單鏈接存儲的線性表,在表頭插入結(jié)點(diǎn)的時間復(fù)雜度為_,在表尾插 入結(jié)點(diǎn)的時間復(fù)雜度為_。 (答案:O(1),O(1)7. 從一個順序表和單鏈表中訪問任一個給定位置序號的元素(結(jié)點(diǎn))的時間復(fù)雜度分別 為_和_。(答案:O(1),O(n)三、 算法設(shè)計題1. 修改從順序存儲的集合中刪除元素的算法,要求當(dāng)刪除一個元素后檢查數(shù)組空間的大小,若空間利用率小于40%同時數(shù)組長度大于maxSize時則釋放數(shù)組的一半存儲空間。public void remove(int i) throws Excep
8、tionif(i<0|i>curLen-1)throw new Exception("刪除位置非法");for(int j=i;i<curLen-1;i+)listItemj=listItemj+1;curLen-;if(double)curLen/maxSize<0.4 && curLen>maxSize) maxSize=maxSize/2;listItem=new ObjectmaxSize; System.out.println(maxSize);2. 編寫順序存儲集合類sequenceSet中的構(gòu)造方法,它包含有一維數(shù)
9、組參數(shù)Object a,該方法中給setArray數(shù)組分配的長度是a數(shù)組長度的1.5倍,并且根據(jù)a數(shù)組中的所有不同的元素值建立一個集合。public sequenceSet(Object a) length=0; setArray=new Object(int)(a.length*1.5); for(int i=0; i<a.length; i+) int j; for(j=0; j<length; j+) if(setArrayj.equals(ai) break; if(j=length) setArraylength=ai; length+; 3. 編寫一個靜態(tài)成員方法,返回
10、一個順序存儲的集合set中所有元素的最大值,假定元素類型為Double。 public static Object maxValue(Set set) sequenceSet dset=(sequenceSet)set; if(dset.size()=0) return null; Double x=(Double)dset.value(1); for(int i=1; i<dset.size(); i+) Double y=(Double)dset.value(i+1); if(pareTo(x)>0) x=y; return x; 4. 編寫順序存儲集合類sequenceSet
11、中的復(fù)制構(gòu)造方法,它包含有一個參數(shù)為Set set,實(shí)現(xiàn)把set所指向的順序集合的內(nèi)容復(fù)制到當(dāng)前集合中的功能。 public sequenceSet(Set set) sequenceSet dset=(sequenceSet)set; setArray=new Objectdset.setArray.length; for(int i=0; i<dset.length; i+) setArrayi=dset.setArrayi; length=dset.length; 5. 編寫一個靜態(tài)成員方法,實(shí)現(xiàn)兩個順序存儲集合的差運(yùn)算,并返回所求得的差集。 public static Set d
12、ifference(Set set1, Set set2) sequenceSet dset2=(sequenceSet)set2; sequenceSet1 dset3=new sequenceSet(set1); for(int i=0; i<dset2.size(); i+) dset3.remove(dset2.value(i+1); return dset3; 6. 編寫一個靜態(tài)成員方法,實(shí)現(xiàn)兩個鏈接存儲集合的差運(yùn)算,并返回所求得的差集。 public static Set difference1(Set set1, Set set2) linkSet dset1=(linkS
13、et)set1; linkSet dset2=(linkSet)set2; linkSet dset3=new linkSet(); for(int i=0; i<dset1.size(); i+) dset3.add(dset1.value(i+1); for(int i=0; i<dset2.size(); i+) dset3.remove(dset2.value(i+1); return dset3; 7. 編寫一個帶有主函數(shù)的程序,其中包含兩個靜態(tài)成員方法,分別為使用順序和鏈接存儲的線性表解決約瑟夫(Josephus)問題。約瑟夫的問題是:設(shè)有n個人圍坐在一張圓桌周圍,現(xiàn)從
14、某個人開始從1報數(shù),數(shù)到m的人出列(即離開坐位,不參加以后的報數(shù)),接著從出列的下一個人開始重新從1報數(shù),數(shù)到m的人又出列,如此下去直到所有人都出列為止,試求出這n個人的出列次序。 例如,當(dāng)n=8,m=4時,若從第一個人開始報數(shù),假定n個人對應(yīng)的編號依次為1、2、n,則得到的出列次序?yàn)椋?,8,5,2,1,3,7,6。 在每個解決約瑟夫問題的靜態(tài)成員方法中,要求以整型對象n、m和s作為參數(shù),n表示開始參加報數(shù)的人數(shù),m為下一次要出列的人所報出的數(shù)字序號,s為最開始報數(shù)的那個人的編號。 注意:人的座位是首位相接的,所以報數(shù)是循環(huán)進(jìn)行的,最后一個人報數(shù)后,接著是最前面的一個人報數(shù)。 參考程序如下:
15、 public class Chap3_15 static void seqJosephus(int n, int m, int s) /使用順序表解決約琵夫問題的算法,n為人數(shù),每次報數(shù)到m出列 if(n<=0 | m<=0 | s<=0) System.out.println("參數(shù)值不合法,退出運(yùn)行!"); System.exit(1); sequenceList a=new sequenceList(n); /定義和創(chuàng)建一個線性表a int i,k; for(i=1; i<=n; i+) a.add(i,i); /插入n個元素,元素值依次為1
16、n k=s; /給k賦初值為s,開始從編號為s的人起報數(shù) for(i=1; i<n; i+) /循環(huán)n-1次,每次使一個人出列 k=(k+m-1)%a.size(); /計算出待出列的元素序號 if(k=0) k=a.size(); /若k的值為0則應(yīng)修改為表尾的序號 System.out.print(a.value(k)+", "); /輸出序號為k的元素值 a.remove(k); /從線性表中刪除序號為k的元素 System.out.println(a.value(1); /輸出最后剩余的一個元素的值 static void linkJosephus(int n
17、, int m, int s) /使用鏈表解決約琵夫問題的算法,n為人數(shù) if(n<=0 | m<=0 | s<=0) System.out.println("參數(shù)值不合法,退出運(yùn)行!"); System.exit(1); linkList a=new linkList(); /定義和創(chuàng)建一個空的線性鏈表a int i,k; for(i=n; i>=1; i-) a.add(i,1); /插入n個結(jié)點(diǎn),結(jié)點(diǎn)值依次為1n Node p=a.prior(), q=p.next, head=p; /q指向表頭結(jié)點(diǎn),p為前驅(qū) k=1; /給k賦初值1 while(k<s) /循環(huán)結(jié)束后q結(jié)點(diǎn)為第s個結(jié)點(diǎn) p=q; q=q.next; if(q=head) p=q; q=q.next;/若q為附加表頭結(jié)點(diǎn),則移到表頭 k+; for(i=1; i<n; i+) /循環(huán)n-1次,每次從1報數(shù)到m k=1; while(k<m) /每次循環(huán)結(jié)束,q指向要出列的結(jié)點(diǎn) p=q; q=q.next; if(q=head) p=q; q=q.next;/使指針跳過表頭附加結(jié)點(diǎn) k+;
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025活動板房銷售合同
- 電視機(jī)采購合同(2025年)
- 租房合同范本帶家電版
- 建房安全合同協(xié)議書
- 裝飾家裝合同電子版
- 產(chǎn)品推廣服務(wù)合同
- 運(yùn)輸合同托運(yùn)方承運(yùn)方司機(jī)個人三方合同
- 產(chǎn)品購銷合同范本紡織面料布購銷合同范本
- 產(chǎn)品外觀設(shè)計合同
- 口腔正畸科普課件
- 2024年廣東省普通高中學(xué)業(yè)水平合格性地理試卷(1月份)
- 住宅樓安全性檢測鑒定方案
- 配送管理招聘面試題與參考回答2024年
- 江蘇省語文小學(xué)三年級上學(xué)期期末試題及解答參考(2024年)
- 黑龍江哈爾濱市省實(shí)驗(yàn)中學(xué)2025屆數(shù)學(xué)高一上期末監(jiān)測試題含解析
- 小學(xué)一年級數(shù)學(xué)思維訓(xùn)練100題(附答案)
- 安全生產(chǎn)治本攻堅三年行動方案(一般工貿(mào)) 2024
- 2024年廣東省廣州市黃埔區(qū)中考一模語文試題及答案
- 飯?zhí)脪炜繀f(xié)議合同范本
- 2023-2024學(xué)年遼寧省重點(diǎn)高中沈陽市郊聯(lián)體高二上學(xué)期期末考試生物試題(解析版)
評論
0/150
提交評論