版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)第二章習(xí)題解答一、單選題 1在一個(gè)長(zhǎng)度為n的順序存儲(chǔ)線性表中,向第i個(gè)元素(1in+1)之前插入一個(gè)新元素時(shí),需要從后向前依次后移 (B) 個(gè)元素。 A、n-i B、n-i+1 C、n-i-1
2、160; D、i 2在一個(gè)長(zhǎng)度為n的順序存儲(chǔ)線性表中,刪除第i個(gè)元素(1in+1)時(shí),需要從前向后依次前移 (A)個(gè)元素。 A、n-i B、n-i+1 C、n-i-1 &
3、#160; D、i 3. 在一個(gè)長(zhǎng)度為n的線性表中順序查找值為x的元素時(shí),在等概率情況下,查找成功時(shí) 的平均查找長(zhǎng)度(即需要比較的元素個(gè)數(shù))為( C )。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 4在一個(gè)長(zhǎng)度為 n的線性表中,刪除值為x的元素時(shí)需要比較元素和移動(dòng)元素的總次 數(shù)為(C )。 A. (n+1)/2 B. n/2 C. n D. n+1 5. 在一個(gè)順序表的表尾插入一個(gè)元素的時(shí)間復(fù)雜度為(B )。 A. O(n) B. O(1) C. O(n*n) D. O(log2n) 6.若一個(gè)結(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. 假定一個(gè)多項(xiàng)式中x的最高次冪為n,則在保存所有系數(shù)項(xiàng)的線性表表示中,其線性 表長(zhǎng)度為(A )。 A. n+1 B. n C. n-1 D. n+2 二、填空題 1對(duì)于當(dāng)前長(zhǎng)度為n的線性表,共包含有_多個(gè)插入元素的位置,共包含有 _多個(gè)刪除元素的位置。(答案n+1 n) 2若經(jīng)常需要對(duì)線性表進(jìn)行表尾插入和刪除運(yùn)算,則最好采用_存儲(chǔ)結(jié)構(gòu),若經(jīng) 常需要對(duì)線性表進(jìn)行表頭插入和刪除運(yùn)算,則最好采用_存儲(chǔ)結(jié)構(gòu)。
6、0;(答案:順序 鏈?zhǔn)剑?由n個(gè)元素生成一個(gè)順序表,若每次都調(diào)用插入算法把一個(gè)元素插入到表頭,則整個(gè) 算法的時(shí)間復(fù)雜度為_(kāi),若每次都調(diào)用插入算法把一個(gè)元素插入到表尾,則整個(gè)算法 的時(shí)間復(fù)雜度為_(kāi)。 (答案: O(n) O(n)4由n個(gè)元素生成一個(gè)單鏈表,若每次都調(diào)用插入算法把一個(gè)元素插入到表頭,則整個(gè) 算法的時(shí)間復(fù)雜度為_(kāi),若每次都調(diào)用插入算法把一個(gè)元素插入到表尾,則整個(gè)算法 的時(shí)間復(fù)雜度為_(kāi)。 (答案: O(1) O(1)5. 對(duì)于一個(gè)長(zhǎng)度為n的順序存儲(chǔ)的線性表,在表頭插入元素的時(shí)間復(fù)雜度為_(kāi), 在
7、表尾插入元素的時(shí)間復(fù)雜度為_(kāi)。 (答案:O(n),O(1)6. 對(duì)于一個(gè)單鏈接存儲(chǔ)的線性表,在表頭插入結(jié)點(diǎn)的時(shí)間復(fù)雜度為_(kāi),在表尾插 入結(jié)點(diǎn)的時(shí)間復(fù)雜度為_(kāi)。 (答案:O(1),O(1)7. 從一個(gè)順序表和單鏈表中訪問(wèn)任一個(gè)給定位置序號(hào)的元素(結(jié)點(diǎn))的時(shí)間復(fù)雜度分別 為_(kāi)和_。(答案:O(1),O(n)三、 算法設(shè)計(jì)題1. 修改從順序存儲(chǔ)的集合中刪除元素的算法,要求當(dāng)刪除一個(gè)元素后檢查數(shù)組空間的大小,若空間利用率小于40%同時(shí)數(shù)組長(zhǎng)度大于maxSize時(shí)則釋放數(shù)組的一半存儲(chǔ)空間。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. 編寫(xiě)順序存儲(chǔ)集合類(lèi)sequenceSet中的構(gòu)造方法,它包含有一維數(shù)
9、組參數(shù)Object a,該方法中給setArray數(shù)組分配的長(zhǎng)度是a數(shù)組長(zhǎng)度的1.5倍,并且根據(jù)a數(shù)組中的所有不同的元素值建立一個(gè)集合。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. 編寫(xiě)一個(gè)靜態(tài)成員方法,返回
10、一個(gè)順序存儲(chǔ)的集合set中所有元素的最大值,假定元素類(lèi)型為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. 編寫(xiě)順序存儲(chǔ)集合類(lèi)sequenceSet
11、中的復(fù)制構(gòu)造方法,它包含有一個(gè)參數(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. 編寫(xiě)一個(gè)靜態(tài)成員方法,實(shí)現(xiàn)兩個(gè)順序存儲(chǔ)集合的差運(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. 編寫(xiě)一個(gè)靜態(tài)成員方法,實(shí)現(xiàn)兩個(gè)鏈接存儲(chǔ)集合的差運(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. 編寫(xiě)一個(gè)帶有主函數(shù)的程序,其中包含兩個(gè)靜態(tài)成員方法,分別為使用順序和鏈接存儲(chǔ)的線性表解決約瑟夫(Josephus)問(wèn)題。約瑟夫的問(wèn)題是:設(shè)有n個(gè)人圍坐在一張圓桌周?chē)F(xiàn)從
14、某個(gè)人開(kāi)始從1報(bào)數(shù),數(shù)到m的人出列(即離開(kāi)坐位,不參加以后的報(bào)數(shù)),接著從出列的下一個(gè)人開(kāi)始重新從1報(bào)數(shù),數(shù)到m的人又出列,如此下去直到所有人都出列為止,試求出這n個(gè)人的出列次序。 例如,當(dāng)n=8,m=4時(shí),若從第一個(gè)人開(kāi)始報(bào)數(shù),假定n個(gè)人對(duì)應(yīng)的編號(hào)依次為1、2、n,則得到的出列次序?yàn)椋?,8,5,2,1,3,7,6。 在每個(gè)解決約瑟夫問(wèn)題的靜態(tài)成員方法中,要求以整型對(duì)象n、m和s作為參數(shù),n表示開(kāi)始參加報(bào)數(shù)的人數(shù),m為下一次要出列的人所報(bào)出的數(shù)字序號(hào),s為最開(kāi)始報(bào)數(shù)的那個(gè)人的編號(hào)。 注意:人的座位是首位相接的,所以報(bào)數(shù)是循環(huán)進(jìn)行的,最后一個(gè)人報(bào)數(shù)后,接著是最前面的一個(gè)人報(bào)數(shù)。 參考程序如下:
15、 public class Chap3_15 static void seqJosephus(int n, int m, int s) /使用順序表解決約琵夫問(wèn)題的算法,n為人數(shù),每次報(bào)數(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)建一個(gè)線性表a int i,k; for(i=1; i<=n; i+) a.add(i,i); /插入n個(gè)元素,元素值依次為1
16、n k=s; /給k賦初值為s,開(kāi)始從編號(hào)為s的人起報(bào)數(shù) for(i=1; i<n; i+) /循環(huán)n-1次,每次使一個(gè)人出列 k=(k+m-1)%a.size(); /計(jì)算出待出列的元素序號(hào) if(k=0) k=a.size(); /若k的值為0則應(yīng)修改為表尾的序號(hào) System.out.print(a.value(k)+", "); /輸出序號(hào)為k的元素值 a.remove(k); /從線性表中刪除序號(hào)為k的元素 System.out.println(a.value(1); /輸出最后剩余的一個(gè)元素的值 static void linkJosephus(int n
17、, int m, int s) /使用鏈表解決約琵夫問(wèn)題的算法,n為人數(shù) if(n<=0 | m<=0 | s<=0) System.out.println("參數(shù)值不合法,退出運(yùn)行!"); System.exit(1); linkList a=new linkList(); /定義和創(chuàng)建一個(gè)空的線性鏈表a int i,k; for(i=n; i>=1; i-) a.add(i,1); /插入n個(gè)結(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個(gè)結(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報(bào)數(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;/使指針跳過(guò)表頭附加結(jié)點(diǎn) k+;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年宿舍租客入住登記及管理協(xié)議3篇
- 新疆師范高等專(zhuān)科學(xué)校《廣告與招貼》2023-2024學(xué)年第一學(xué)期期末試卷
- 《人間詞話講義》課件
- 《人民幣匯率制度》課件
- 新疆建設(shè)職業(yè)技術(shù)學(xué)院《班主任與班級(jí)管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 安全施工組織設(shè)計(jì)
- 路面檢測(cè)車(chē)合同范例
- 農(nóng)村奶牛轉(zhuǎn)讓合同范例
- 咖啡設(shè)備出售合同范例
- 物流運(yùn)輸標(biāo)準(zhǔn)合同范例
- 醫(yī)學(xué)人工智能原理及實(shí)踐
- GB∕T 41550-2022 畜禽屠宰用脫毛劑使用規(guī)范
- 輕型觸探儀地基承載力參數(shù)對(duì)照表
- 綜合管理部負(fù)責(zé)人(部長(zhǎng))崗位職責(zé)
- 檢驗(yàn)科15項(xiàng)質(zhì)量控制指標(biāo)(檢驗(yàn)科質(zhì)控小組活動(dòng)記錄)
- GB∕T 2518-2019 連續(xù)熱鍍鋅和鋅合金鍍層鋼板及鋼帶
- 海南省商品住宅專(zhuān)項(xiàng)維修資金管理辦法
- 美國(guó)文學(xué)各個(gè)時(shí)期作家作品集合
- 空運(yùn)委托書(shū)范本
- 工業(yè)氯化芐企業(yè)標(biāo)準(zhǔn)連云港泰樂(lè)
- 機(jī)翼翼肋實(shí)例零件庫(kù)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論