數據結構各章自測題與答案_第1頁
數據結構各章自測題與答案_第2頁
數據結構各章自測題與答案_第3頁
數據結構各章自測題與答案_第4頁
數據結構各章自測題與答案_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章概論

自測題答案、填空題數據結構是一門研究非數值計算的程序設計問題中計算機的 操作對象 以及它們之間的關系 和運算等的學科。數據結構被形式地定義為(D,R),其中D是數據元素 的有限集合,R是D上的關系 有限集合。數據結構包括數據的一邏輯結構_、數據的一存儲結構—和數據的—運算_這三個方面的內容。數據結構按邏輯結構可分為兩大類,它們分別是 —線性結構—和—非線性結構_。線性結構中元素之間存在一對一關系,樹形結構中元素之間存在一對多關系,圖形結構中元素之間存在多對多關系。6.在線性結構中,第一個結點—沒有一前驅結點,其余每個結點有且只有 1個前驅結點;最后一個結點—沒有_后續(xù)結點,其余每個結點有且只有1個后續(xù)結點。在樹形結構中,樹根結點沒有一前驅—結點,其余每個結點有且只有_1_個前驅結點;葉子結點沒有_后續(xù)—結點,其余每個結點的后續(xù)結點數可以任意多個_。在圖形結構中,每個結點的前驅結點數和后續(xù)結點數可以—任意多個_。9?數據的存儲結構可用四種基本的存儲方法表示,它們分別是一順序、鏈式、索引和散列。數據的運算最常用的有5種,它們分別是插入、刪除、修改、查找、排序。一個算法的效率可分為一時間效率和_空間—效率。、單項選擇題非線性結構是數據元素之間存在一種:A)一對多關系 B)多對多關系 C)多對一關系 D)一對一關系數據結構中,與所使用的計算機無關的是數據的結構;A)存儲B)物理 C)邏輯 D)物理和存儲算法分析的目的是:A算法分析的目的是:A)找出數據結構的合理性C)分析算法的效率以求改進算法分析的兩個主要方面是:A)空間復雜性和時間復雜性C)可讀性和文檔性計算機算法指的是:A)計算方法 B)排序方法計算機算法必須具備輸入、輸出和A)可行性、可移植性和可擴充性C)確定性、有窮性和穩(wěn)定性三、簡答題B)研究算法中的輸入和輸出的關系D)分析算法的易懂性和文檔性B)正確性和簡明性D)數據復雜性和程序復雜性C)解決問題的有限運算序列 等D)調度方法5個特性。B)可行性、確定性和有窮性D)易讀性、穩(wěn)定性和安全性2.s=0;2.s=0;fori=0;i<n;i++)for(j=0;j<n;j++)s+=B[i][j];sum=s;答:O(n2)【嚴題集1.2②】數據結構和數據類型兩個概念之間有區(qū)別嗎?答:簡單地說,數據結構定義了一組按某些關系結合在一起的數組元素。數據類型不僅定義了一組帶結構的數據元素,而且還在其上定義了一組操作。簡述線性結構與非線性結構的不同點。答:線性結構反映結點間的邏輯關系是 一對一的,非線性結構反映結點間的邏輯關系是多對多的四、【嚴題集1.8④】分析下面各程序段的時間復雜度1.for(i=0;i<n;i++)for(j=0;j<m;j++)A[i][j]=0;答:0(m*n)x=0;for(i=1;i<n;i++)for(j=1;j<=n-i;j++)x++;

解:因為x++共執(zhí)行了n-1+n-2+ +仁n(n-1)/2,所以執(zhí)行時間為O(n2)五、設有數據邏輯結構S=(D,R),試按各小題所給條件畫出這些邏輯結構的圖示,并確定相對于關系 R,哪些結點是開始結點,哪些結點是終端結點?【嚴蔚敏習題集P71.3②】D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4)}答:di-d2-d3-d4 di一無直接前驅,是首結點 d4一無直接后繼是尾結點2。 D={d1,d2,…,d9}R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5),(d6,d7),(d8,d9)}答:此圖為樹形結構 di一無直接前驅,是根結點 d2,d5,d7,d9一無直接后繼是葉子結點3.D={d1,d2,…,d9}R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9),(d5,d6),(d8,d9),(d9,d7),(d4,d7),(d4,d6)}答:此圖為圖形結構 d1,d2無直接前驅,是開始結點 d6,d7 無直接后繼是終端結點第2章自測卷答案、填空【嚴題集2.2①】在順序表中插入或刪除一個元素,需要平均移動 —表中一半元素,具體移動的元素個數與一表長和該元素在表中的位置—有關。線性表中結點的集合是一有限—的,結點間的關系是—一對一—的。3.向一個長度為n的向量的第3.向一個長度為n的向量的第i個元素(1<i<n+1)之前插入一個元素時需向后移動n-i+1 元素。向一個長度為n的向量中刪除第i個元素(1<i<n)時,需向前移動_n-i一個元素。在順序表中訪問任意一結點的時間復雜度均為 0(1)_,因此,順序表也稱為—隨機存取—的數據結構?!緡李}集2.2①】順序表中邏輯上相鄰的元素的物理位置 —必定相鄰。單鏈表中邏輯上相鄰的元素的物理位置 不一定相鄰?!緡李}集2.2①】在單鏈表中,除了首元結點外,任一結點的存儲位置由 —其直接前驅結點的鏈域的值—指示。8.在n個結點的單鏈表中要刪除已知結點 *p,需找到它的前驅結點的地址,其時間復雜度為0(n)。二、判斷正誤(在正確的說法后面打勾,反之打又)(x)1.鏈表的每個結點中都恰好包含一個指針。答:錯誤。鏈表中的結點可含多個指針域,分另U存放多個指針。例如,雙向鏈表中的結點可以含有兩個指針域,分別存放指向其直接前趨和直接后繼結點的指針。i=1;while(i<=n)i=i*3;答:O(Iog3n)

(x)2.鏈表的物理存儲結構具有同鏈表一樣的順序。 錯,鏈表的存儲結構特點是無序, 而鏈表的示意圖有序。(X)3.鏈表的刪除算法很簡單,因為當刪除鏈中某個結點后,計算機會自動地將后續(xù)的各個單元向前移動。 錯,鏈表的結點不會移動,只是指針內容改變。(x)4.線性表的每個結點只能是一個簡單類型,而鏈表的每個結點可以是一個復雜類型。錯,混淆了邏輯結構與物理結構,鏈表也是線性表!且即使是順序表,也能存放記錄型數據。(x)5.順序表結構適宜于進行順序存取,而鏈表適宜于進行隨機存取。錯,正好說反了。順序表才適合隨機存取,鏈表恰恰適于“順藤摸瓜”(x)6.順序存儲方式的優(yōu)點是存儲密度大,且插入、刪除運算效率高。錯,前一半正確,但后一半說法錯誤,那是鏈式存儲的優(yōu)點。順序存儲方式插入、刪除運算效率較低,在表長為n的順序表中,插入和刪除一個數據元素,平均需移動表長一半個數的數據元素。(x)7.線性表在物理存儲空間中也一定是連續(xù)的。錯,線性表有兩種存儲方式,順序存儲和鏈式存儲。后者不要求連續(xù)存放。(x)8.線性表在順序存儲時,邏輯上相鄰的元素未必在存儲的物理位置次序上相鄰。錯誤。線性表有兩種存儲方式,在順序存儲時,邏輯上相鄰的元素在存儲的物理位置次序上也相鄰。(x)9.順序存儲方式只能用于存儲線性結構。錯誤。順序存儲方式不僅能用于存儲線性結構,還可以用來存放非線性結構,例如完全二叉樹是屬于非線性結構,但其最佳存儲方式是順序存儲方式。 (后一節(jié)介紹)(x)10.線性表的邏輯順序與存儲順序總是一致的。錯,理由同7。鏈式存儲就無需一致。三、單項選擇題(C)(B)(A)1?數據在計算機存儲器內表示時,物理地址與邏輯地址相同并且是連續(xù)的,稱之為:((C)(B)(A)1?數據在計算機存儲器內表示時,物理地址與邏輯地址相同并且是連續(xù)的,稱之為:(A)存儲結構 (B)邏輯結構 (C)順序存儲結構 (D)鏈式存儲結構一個向量第一個元素的存儲地址是 100,每個元素的長度為2,則第5個元素的地址是(A)110 (B)108 (C)100 (D)120在n個結點的順序表中,算法的時間復雜度是 0(1)的操作是:訪問第i個結點(1<i<n)和求第i個結點的直接前驅(2<i<n)在第i個結點后插入一個新結點(1<i<n)刪除第i個結點(1<i<n)將n個結點從小到大排序(A)(B)(C)(D)(B)(A)向一個有127個元素的順序表中插入一個新元素并保持原來順序不變,平均要移動(A)8 (B)63.5 (C)63 (D)7鏈接存儲的存儲結構所占存儲空間:個元素(B)6.鏈表是一種采用(A)順序(B)鏈式存儲結構存儲的線性表;(C)(B)6.鏈表是一種采用(A)順序(B)鏈式存儲結構存儲的線性表;(C)星式(D)網狀(D)7.線性表若采用鏈式存儲結構時(A)必須是連續(xù)的(C)一定是不連續(xù)的)8?線性表L在(A)需經常修改L中的結點值(C)L中含有大量的結點)9? 單鏈表的存儲密度要求內存中可用存儲單元的地址(B)部分地址必須是連續(xù)的(D)連續(xù)或不連續(xù)都可以情況下適用于使用鏈式結構實現(xiàn)。(E)需不斷對L進行刪除插入(D)L中結點結構復雜(A)大于1; (E)等于1;)10?設a1、a2、a3為3個結點,P0(C)小于1;整數P0,3(D)不能確定4代表地址,則如下的鏈式存儲結構稱為3 4Poala2A3(A)分兩部分,一-部分存放結點值,另部分存放表示結點間關系的指針(B)只有一部分,存放結點值(C)只有一部分,存儲表示結點間關系的指針(D)分兩部分,一部分存放結點值,另一部分存放結點所占單元數(A)循環(huán)鏈表 (E)單鏈表(C)雙向循環(huán)鏈表 (D)雙向鏈表四、簡答題【嚴題集2.3②】試比較順序存儲結構和鏈式存儲結構的優(yōu)缺點。在什么情況下用順序表比鏈表好?答:①順序存儲時,相鄰數據元素的存放地址也相鄰(邏輯與物理統(tǒng)一) ;要求內存中可用存儲單元的地址必須是連續(xù)的。優(yōu)點:存儲密度大(=1?),存儲空間利用率高。缺點:插入或刪除元素時不方便。②鏈式存儲時,相鄰數據元素可隨意存放,但所占存儲空間分兩部分,一部分存放結點值,另一部分存放表示結點間關系的指針優(yōu)點:插入或刪除元素時很方便,使用靈活。缺點:存儲密度小( <1),存儲空間利用率低。順序表適宜于做查找這樣的靜態(tài)操作;鏈表宜于做插入、刪除這樣的動態(tài)操作。若線性表的長度變化不大,且其主要操作是查找,則采用順序表;若線性表的長度變化較大,且其主要操作是插入、刪除操作,則采用鏈表。2.【嚴題集2.1①】描述以下三個概念的區(qū)別:頭指針、頭結點、首元結點(第一個元素結點) 。在單鏈表中設置頭結點的作用是什么?答:首元結點是指鏈表中存儲線性表中第一個數據元素 a1的結點。為了操作方便,通常在鏈表的首元結點之前附設一個結點,稱為頭結點,該結點的數據域中不存儲線性表的數據元素,其作用是為了對鏈表進行操作時,可以對空表、非空表的情況以及對首元結點進行統(tǒng)一處理。頭指針是指向鏈表中第一個結點(或為頭結點或為首元結點)的指針。若鏈表中附設頭結點,則不管線性表是否為空表,頭指針均不為空。否則表示空表的鏈表的頭指針為空。這三個概念對單鏈表、雙向鏈表和循環(huán)鏈表均適用。是否設置頭結點,是不同的存儲結構表示同一邏輯結構的問題。頭結點headdatalink頭指針 首元結點簡而言之,頭指針是指向鏈表中第一個結點(或為頭結點或為首元結點)的指針;頭結點是在鏈表的首元結點之前附設的一個結點; 數據域內只放空表標志和表長等信息 (內放頭指針?那還得另配一個頭指針!?。。┦自亟Y點是指鏈表中存儲線性表中第一個數據元素 a1的結點。第3章棧和隊列自測卷答案一、填空題(每空1分,共15分)【李春葆】向量、棧和隊列都是一線性一結構,可以在向量的—任何位置插入和刪除元素;對于棧只能在—棧頂插入和刪除元素;對于隊列只能在—隊尾—插入和—隊首—刪除元素。棧是一種特殊的線性表,允許插入和刪除運算的一端稱為 —棧頂。不允許插入和刪除運算的一端稱為棧底?!犃小潜幌薅橹荒茉诒淼囊欢诉M行插入運算,在表的另一端進行刪除運算的線性表。在一個循環(huán)隊列中,隊首指針指向隊首元素的 —前一個位置。在具有n個單元的循環(huán)隊列中,隊滿時共有 n-1個元素。向棧中壓入元素的操作是先 移動棧頂指針,后_存入元素。從循環(huán)隊列中刪除一個元素時,其操作是 先—移動隊首指針 ,后取出元素?!?0年統(tǒng)考題〗帶表頭結點的空循環(huán)雙向鏈表的長度等于 _0。解:head ] |R=head二、判斷正誤(判斷下列概念的正確性,并作出簡要的說明。 )(每小題1分,共10分)(x)1.線性表的每個結點只能是一個簡單類型,而鏈表的每個結點可以是一個復雜類型。錯,線性表是邏輯結構概念,可以順序存儲或鏈式存儲,與元素數據類型無關。(X)2.在表結構中最常用的是線性表,棧和隊列不太常用。錯,不一定吧?調用子程序或函數常用, CPU中也用隊列。(V)3.棧是一種對所有插入、刪除操作限于在表的一端進行的線性表,是一種后進先出型結構。(V)4.對于不同的使用者,一個表結構既可以是棧,也可以是隊列,也可以是線性表。正確,都是線性邏輯結構,棧和隊列其實是特殊的線性表,對運算的定義略有不同而已。(X)5.棧和鏈表是兩種不同的數據結構。錯,棧是邏輯結構的概念,是特殊殊線性表,而鏈表是存儲結構概念,二者不是同類項。(X)6.棧和隊列是一種非線性數據結構。錯,他們都是線性邏輯結構,棧和隊列其實是特殊的線性表,對運算的定義略有不同而已。(V)7.棧和隊列的存儲方式既可是順序方式,也可是鏈接方式。(V)8.兩個棧共享一片連續(xù)內存空間時,為提高內存利用率,減少溢出機會,應把兩個棧的棧底分別設在這片內存空間的兩端。(X)9.隊是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進后出型結構。錯,后半句不對。(X)10.一個棧的輸入序列是12345,則棧的輸出序列不可能是 12345。錯,有可能。三、單項選擇題(每小題1分,共20分)(B)1. 〖00年元月統(tǒng)考題〗棧中元素的進出原則是A.先進先出 B.后進先出C.棧空則進 D.棧滿則出(C)2.〖李春葆〗若已知一個棧的入棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若p仁n則pi為A.i B.n=i C.n-i+1D.不確定解釋:當p1=n,即n是最先出棧的,根據棧的原理,n必定是最后入棧的(事實上題目已經表明了),那么輸入順序必定是1,3,…,n,則出棧的序列是 n,…,3,2,1。若不要求順序出棧,則輸出序列不確定)B)3.〖李春葆〗判定一個棧ST(最多元素為mO)為空的條件是A.ST->topv>0B.ST->top=0 C.ST->top<>m0 D.ST->top=m0(A)4.〖李春葆〗判定一個隊列QU(最多元素為 m0)為滿隊列的條件是A.QU->rear—QU->front==mO B.QU->rear—QU->front—1==m0C.QU->front==QU->rear D.QU->front==QU->rea葉1解:隊滿條件是元素個數為m0。由于約定滿隊時隊首指針與隊尾指針相差 1,所以不必再減1了,應當選A。當然,更正確的答案應該取模,即:QU->front==(QU->rear+1)%m0(D)5?數組Q[n]用來表示一個循環(huán)隊列,f為當前隊列頭元素的前一位置,r為隊尾元素的位置,假定隊列中元素的個數小于n,計算隊列中元素的公式為(A)r—f;(B)(n+f—r)%n;(C)n+r—f; (D)(n+r—f)%n【98初程P71】 從供選擇的答案中,選出應填入下面敘述?內的最確切的解答,把相應編號寫在答卷的對應欄內。設有4個數據元素a1、a2、a3和a4,對他們分別進行棧操作或隊操作。在進?;蜻M隊操作時,按 a1、a2、a3、a4次序每次進入一個元素。假設?;蜿牭某跏紶顟B(tài)都是空。現(xiàn)要進行的棧操作是進棧兩次,出棧一次,再進棧兩次,出棧一次;這時,第一次出棧得到的元素是 4,第二次出棧得到的元素是 B是;類似地,考慮對這四個數據元素進行的隊操作是進隊兩次,出隊一次,再進隊兩次,出隊一次;這時,第一次出隊得到的元素是 C ,第二次出隊得到的元素是 D 。經操作后,最后在棧中或隊中的元素還有E個。供選擇的答案:AD:?a1②a2③a3④a4E:①1 ②2 ③3 ④0答:ABCDE=2, 4, 1,2, 2【94初程P75】從供選擇的答案中,選出應填入下面敘述? 內的最確切的解答,把相應編號寫在答卷的對應欄內。棧是一種線性表,它的特點是 4。設用一維數組A[1,…,n]來表示一個棧,A[n]為棧底,用整型變量T指示當前棧頂位置,A[T]為棧頂元素。往棧中推入(PUSH)一個新元素時,變量T的值B;從棧中彈出(POP)一個元素時,變量T的值C。設??諘r,有輸入序列a,b,c,經過PUSH,POP,PUSH,PUSH,POP操作后,從棧中彈出的

元素的序列是 D,變量T的值是E。供選擇的答案:A:①先進先出②后進先出③進優(yōu)于出④出優(yōu)于進⑤隨機進出B,C:? 加1②減1③不變④清0⑤加2⑥減2D:①a,b ②b,c③c,a④b,a ⑤c,b⑥a,cE:①n+1 ②n+2 ③n④n-1⑤n-2答案:ABCDE=2,2,1,6, 4注意,向地址的高端生長,稱為向上生成堆棧;向地址低端生長叫向下生成堆棧,本題中底部為n,向地址的低端遞減生成,稱為向下生成堆棧?!?1初程P77】從供選擇的答案中,選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。在做進棧運算時,應先判別棧是否 A_;在做退棧運算時,應先判別棧是否 B。當棧中元素為n個,做進棧運算時發(fā)生上溢,則說明該棧的最大容量為 C。為了增加內存空間的利用率和減少溢出的可能性,由兩個棧共享一片連續(xù)的內存空間時,應將兩棧的 D分別設在這片內存空間的兩端,這樣,只有當E時,才產生上溢。供選擇的答案:A,B:①空②滿③上溢④下溢C: ①n-1②n③n+1④n/2D: ①長度②深度③棧頂④棧底E:①兩個棧的棧頂同時到達??臻g的中心點 ②其中一個棧的棧頂到達棧空間的中心點③兩個棧的棧頂在達??臻g的某一位置相遇 ④兩個棧均不空,且一個棧的棧頂到達另一個棧的棧底答案:ABCDE=2, 1,2,4,3四、簡答題(每小題4分,共20分)【嚴題集3.2①和3.11①】說明線性表、棧與隊的異同點。劉答:相同點:都是線性結構,都是邏輯結構的概念。都可以用順序存儲或鏈表存儲;棧和隊列是兩種特殊的線性表,即受限的線性表,只是對插入、刪除運算加以限制。不同點:①運算規(guī)則不同,線性表為隨機存取,而棧是只允許在一端進行插入、刪除運算,因而是后進先出表是只允許在4IFO;隊列端進行插入、另一端進行刪除運算,因而是先進先出表 FIFO。②用途不同,堆棧用于子程調用和保護現(xiàn)場,隊列用于 多道作業(yè)處理、指令寄存及其他運算等等。2.【統(tǒng)考書2.【統(tǒng)考書P604-11,難于嚴題集3.1①】設有編號為1,2,3,4的四輛列車,順序進入一個棧式結構的車站,具體寫劉答:至少有14種。①全進之后再出情況,只有劉答:至少有14種。①全進之后再出情況,只有1種:4,3,2,②進3個之后再出的情況,有3種,3,4,2,1③進2個之后再出的情況,有5種,2,4,3」④進1個之后再出的情況,有5種,1,4,3,2出這四輛列車開出車站的所有可能的順序。3.【劉自編】假設正讀和反讀都相同的字符序列為“回3,2,4,13,2,1,42,3,4,12,1,3,42,1,4,32,3,1,41,3,2,41,3,4,21,2,3,41,2,4,3,例如,’abba'和’abcba'是回文,’abcde'和’ababab則不是回文。假設一字符序列已存入計算機,請分析用文”生表、堆棧和隊列等方式正確輸出其回文的可能性?答:線性表是隨機存儲,可以實現(xiàn),靠循環(huán)變量( j--)從表尾開始打印輸出;堆棧是后進先出,也可以實現(xiàn),靠正序入棧、逆序出棧即可;隊列是先進先出,不易實現(xiàn)。哪種方式最好,要具體情況具體分析。若正文在機內已是順序存儲,則直接用線性表從后往前讀取即可,或將堆棧棧頂開到數組末尾,然后直接用POP動作實現(xiàn)。(但堆棧是先減后壓還是……)若正文是單鏈表形式存儲,則等同于隊列,需開輔助空間,可以從鏈首開始入棧,全部壓入后再依次輸出。4.【統(tǒng)考書P604-13】順序隊的“假溢出”是怎樣產生的?如何知道循環(huán)隊列是空還是滿?答:一般的一維數組隊列的尾指針已經到了數組的上界,不能再有入隊操作,但其實數組中還有空位置,這就叫“假溢出”采用循環(huán)隊列是解決假溢出的途徑。另外,解決隊滿隊空的辦法有三:①設置一個布爾變量以區(qū)別隊滿還是隊空;②浪費一個元素的空間,用于區(qū)別隊滿還是隊空

③使用一個計數器記錄隊列中元素個數(即隊列長度)。我們常采用法②,即隊頭指針、隊尾指針中有一個指向實元素,而另一個指向空閑元素。判斷循環(huán)隊列隊空標志是:f=rear隊滿標志是:f=(r+1)%N5.【統(tǒng)考書P604-14】設循環(huán)隊列的容量為40(序號從0到39),現(xiàn)經過一系列的入隊和出隊運算后,有①front=11,rear=19;②front=19,rear=11;問在這兩種情況下,循環(huán)隊列中各有元素多少個?答:用隊列長度計算公式:(N+r-f)%N①L=(40+19-11)%40=8 ②L=(40+11-19)%40=32寫出下列程序段的輸出結果(棧的元素類型 SElemType為char)a'P);ush(S,y);t');Push(S,x);s');1.嚴題集寫出下列程序段的輸出結果(棧的元素類型 SElemType為char)a'P);ush(S,y);t');Push(S,x);s');}答:輸出為“stack”。2. 【嚴題集3.12②】寫出下列程序段的輸出結果(隊列中的元素類型QEIemType為char)voidmain(){QueueQ;InitQueue(Q);Charx='e';y='c';EnQueue(Q, 'h');EnQueue(Q, 'r');EnQueue(Q,y);DeQueue(Q,x);EnQueue(Q,x);DeQueue(Q,x);EnQueue(Q, 'a');whiIe(!QueueEmpty(Q)){DeQueue(Q,y);printf(y);};Printf(x);}答:輸出為“char”?!緡李}集3.13②】簡述以下算法的功能(棧和隊列的元素類型均為int)。voidaIgo3(Queue&Q){StackS;intd;InitStack(S);whiIe(!QueueEmpty(Q)){DeQueue(Q,d);Push(S,d);};whiIe(!StackEmpty(S)){Pop(S,d);EnQueue(Q,d);}}答:該算法的功能是:利用堆棧做輔助,將隊列中的數據元素進行逆置。第45章串和數組一、填空題(每空1分,共20分)—不包含任何字符(長度為0)的串—稱為空串;—由一個或多個空格(僅由空格符)組成的串稱為空白串。(對應嚴題集4.1①,簡答題:簡述空串和空格串的區(qū)別)一 一設S="A;/document/Mary.doc ”,貝Ustrlen(s)=20 , “/”的字符定位的位置為3 。子串的定位運算稱為串的模式匹配; —被匹配的主串稱為目標串,—子串稱為模式。設目標T=”abccdcdccbaa”,模式P=“cdcc”,則第6次匹配成功。若n為主串長,m為子串長,則串的古典(樸素)匹配算法最壞的情況下需要比較字符的總次數為 _(n-m+1)*m_。假設有二維數組A6X8,每個元素用相鄰的6個字節(jié)存儲,存儲器按字節(jié)編址。已知A的起始存儲位置(基地址)為1000,則數組A的體積(存儲量)為288B;末尾元素A57的第一個字節(jié)地址為 1282 ;若按行存儲時,元素A14的第一個字節(jié)地址為(8+4)X6+1000=1072 ;若按列存儲時,元素A47的第一個字節(jié)地址為(6X7+4)X6+1000)=1276 。(注:數組是從。行0列還是從1行1列計算起呢?由末單元為 A57可知,是從0行0列開始!)〖00年計算機系考研題〗 設數組a[1???60,1-70]的基地址為2048,每個元素占2個存儲單元,若以列序為主序順序存儲,則元素a[32,58]的存儲地址為_8950。答:不考慮0行0列,利用列優(yōu)先公式: LOC(aj)=LOC(a,c2)+[(j-c2)*(d1-c1+1)+i-c1)]*L得:LOC(a32,58)=2048+[(58-1)*(60-1+1)+32-1]]*2 =8950三元素組表中的每個結點對應于稀疏矩陣的一個非零元素,它包含有三個數據項,分別表示該元素的行下標、列下標和元素值。求下列廣義表操作的結果:GetHead【((a,b),(c,d)) 頭元素不必加括號GetHead【GetTail【((a,b),(c,d))】】===(c,d) ;GetHead[GetTail【GetHea 【((a,b),(c, GetTail[GetHeadd[GetTail【((a,b),(c,d)】]]=== (d) ;二、單選題(每小題1分, 共15分))(B)1.〖李〗串是一種特殊的線性表,其特殊性體現(xiàn)在:A.可以順序存儲 E.數據元素是一個字符C.可以鏈式存儲 D.數據元素可以是多個字符(B)2.〖李〗設有兩個串p和q,求q在p中首次出現(xiàn)的位置的運算稱作:A.連接 E.模式匹配C.求子串 D.求串長(D)3.〖李〗設串s1='ABCDEFG, s2='PQRST,函數con(x,y)返回x和y串的連接串,subs(s,i,j)返回串s的從序號i開始的[個字符組成的子串,len(s)返回串s的長度,貝Ucon(subs(s1,2,len(s2)),subs(s1,len(s2),2))的結果串是:A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF解:con(x,y)返回x和y串的連接串,即con(x,y)=’ABCDEFGPQRSTsubs(s,i,j)返回串s的從序號i開始的j個字符組成的子串,則subs(s1,2,len(s2))=subs(s1,2,5)= 'BCDEF;subs(s1,len(s2),2)=subs(s1,5,2)= 'EF';所以con(subs(s1,2,len(s2)),subs(s1,len(s2),2)) =con('BCDEF', 'EF')之連接,即CDEFEF(A)4.〖01年計算機系考研題〗假設有60行70列的二維數組a[1?60,1-70]以列序為主序順序存儲,其基地址為10000,每個元素占2個存儲單元,那么第32行第58列的元素a[32,58]的存儲地址為。(無第。行第0列元素)A.16902B.16904 C.14454 D.答案A,B,C均不對答:此題與填空題第8小題相似。(57列X60行+31行)X2字節(jié)+10000=16902(B)5.設矩陣A是一個對稱矩陣,為了節(jié)省存儲,將其下三角部分(如下圖所示)按行序存放在一維數組B[1,n(n-1)/2]中,對下三角部分中任一元素 ai;j(i<j),在一維數組B中下標k的值是:A.i(i-1)/2+j-1 B.i(i-1)/2+j C.i(i+1)/2+j-1 D.i(i+1)/2+ja1,1a2,1a2,2an,nan,1aan,n和C。若按列存儲,則 A[7,1]和A[2,4]的第一個字節(jié)的地址分別是供選擇的答案:TOC\o"1-5"\h\zA?E:①28 ②44 ③76 ④92 ⑤108⑥116⑦ 132 ⑧176 ⑨184 ⑩188答案:ABCDE=8,3,5, 1,6解91注意P78的下標供選擇的答案開始選出應填入下面敘述 ? 內的最確切的解答,把相應編號寫在答卷的對應欄內。先用第一個元素去套用,可能有B和C;存儲數組A的最后一個元素的第一個字節(jié)的地址是再用第二個元素去套用r下標的范圍是B=2而8C咧(標的范圍1到5,每個數組元素用相鄰的4個字節(jié)存儲。存儲器是按字節(jié)以選。假設存儲數組元素A[0,1]的第一個字節(jié)的地址是存儲數組A的最后一個元素的第一個字節(jié)的地址是A。若按行彳 儲,貝UA[3,5]和A[5,3]的第一個字節(jié)的地址分別是7.【94程P12】7.【94程P12】有一個二維數組A,行下標的范圍是1到6字節(jié)編址。那么,這個數組的體積是則存儲數組A的最后一個元素的第一個字節(jié)的地址是按列存儲,則A[5,7]的第一個字節(jié)的地址是D。供選擇的答案A?D:①12 ②66⑦156 ⑧234答案:ABCD=12,10,列下標的范圍是0到7,每個數組元素用相鄰的6個字節(jié)存儲,存儲器按A個字節(jié)。假設存儲數組元素A[1,0]的第一個字節(jié)的地址是0,B。若按行存儲,則A[2,4]的第一個字節(jié)的地址是 C。若③72⑨3,④96 ⑤114276 ⑩2829⑥12011)283(12)288三、 簡答題(每小題5分,共15分)【其他教材】已知二維數組Am,m采用按行優(yōu)先順序存放,每個元素占 K個存儲單元,并且第一個元素的存儲地址為Loc(a11),請寫出求Loc(aij)的計算公式。如果采用列優(yōu)先順序存放呢?解:公式教材已給出,此處雖是方陣,但行列公式仍不相同;按行存儲的元素地址公式是: Loc(aij)=Loc(a11)+[(i-1)*m+(j-1)]*K按列存儲的元素地址公式是: Loc(aij)=Loc(a11)+[(j-1)*m+(i-1)]*K【全國專升本資格考試】遞歸算法比非遞歸算法花費更多的時間,對嗎?為什么?答:不一定。時間復雜度與樣本個數 n有關,是指最深層的執(zhí)行語句耗費時間,而遞歸算法與非遞歸算法在最深層的語句執(zhí)行上是沒有區(qū)別的,循環(huán)的次數也沒有太大差異。僅僅是確定循環(huán)是否繼續(xù)的方式不同,遞歸用棧隱含循環(huán)次數,非遞歸用循環(huán)變量來顯示循環(huán)次數而已。四、 計算題(每題5分,共20分)1, 設s='IAMASTUDENT',t='GOOD,q='WORKER,求Replace(s,'STUDENT',q)和Concat(SubString(s,6,2),Concat(t,SubString(s,7,8)))。解:①Replace(s,'STUDENT',q)='IAMAWORKER'②因為SubString(s,6,2)='ASubString(s,7,8)='STUDENT'Concat(t,SubString(s,7,8))='GOODSTUDENT'所以Concat(SubString(s,6,2),Concat(t,SubString(s,7,8))) ='AGOODSTUDENT'第六章樹和二叉樹第6第6章面是有關二叉樹的敘述,請判斷正誤(每小題1分,共10分)(V)(V)1,若二叉樹用二叉鏈表作存貯結構,則在x)2.二叉樹中每個結點的兩棵子樹的高度差等于V)3.二叉樹中每個結點的兩棵子樹是有序的。n個結點的二叉樹鏈表中只有 n—1個非空指針域1o(x)4.二叉樹中每個結點有兩棵非空子樹或有兩棵空子樹。(X)5.二叉樹中每個結點的關鍵字值大于其左非空子樹(若存在的話)所有結點的關鍵字值,且小于其右非空子樹(若存在的話)所有結點的關鍵字值。 (應當是二叉排序樹的特點)(X)6.二叉樹中所有結點個數是 2k-i-1,其中k是樹的深度。(應2i-1)x)7.二叉樹中所有結點,如果不存在非空左子樹,則不存在非空右子樹。x)8.對于一棵非空二叉樹,它的根結點作為第一層,則它的第 i層上最多能有2i—1個結點。(應2i-i)V)9.用二叉鏈表法(link-rlink)存儲包含n個結點的二叉樹,結點的2n個指針區(qū)域中有n+1個為空指針。(正確。用二叉鏈表存儲包含n個結點的二叉樹,結點共有2n個鏈域。由于二叉樹中,除根結點外,每一個結點有且僅有一個雙親,所以只有n-1個結點的鏈域存放指向非空子女結點的指針,還有 n+1個空指針。)即有后繼鏈接的指針僅 n-1個。(V)10.〖01年計算機系研題〗具有12個結點的完全二叉樹有5個度為2的結點。最快方法:用葉子數=[n/2]=6,再求n2=n0-仁5二、填空(每空1分,共15分)1.由3個結點所構成的二叉樹有 _5_種形態(tài)。2.【計算機研2000】一棵深度為6的滿二叉樹有_n1+n2=0+n2=no-1=31_個分支結點和_26-1=32—個葉子。注:滿二叉樹沒有度為1的結點,所以分支結點數就是二度結點數。 〃 一一3.一棵具有257個結點的完全二又樹,它的深度為 _9。(注:用 log2(n)+1=8.xx+1=9【全國專升本統(tǒng)考題】設一棵完全二又樹有700個結點,則共有一350_個葉子結點。答:最快方法:用葉子數=[n/2]=350設一棵完全二又樹具有1000個結點,則此完全二又樹有_500_個葉子結點,有_499_個度為2的結點,有—1_個結點只有非空左子樹,有_0個結點只有非空右子樹。答:最快方法:用葉子數=[n/2]=500,n2=n0-1=499。另外,最后一結點為2i屬于左葉子,右葉子是空的,所以有1個非空左子樹。完全二又樹的特點決定不可能有左空右不空的情況,所以非空右子樹數二 0.【嚴題集6.7③】一棵含有n個結點的k又樹,可能達到的最大深度為 n,最小深度為2。答:當k=1(單又樹)時應該最深,深度二n(層);當k=n-1(n-1又樹)時應該最淺,深度二2(層),但不包括n=0或1時的特例情況。教材答案是“完全 k又樹”,未定量。)【96程試題1】二又樹的基本組成部分是:根(N)、左子樹(L)和右子樹(R)。因而二又樹的遍歷次序有六種。最常用的是三種:前序法(即按NLR次序),后序法(即按LRN 次序)和中序法(也稱對稱序法,即按 LNR次序)。這三種方法相互之間有關聯(lián)。若已知一棵二又樹的前序序列是 BEFCGDH,中序序列是FEBGCHD,則它的后序序列必是FEGHDCB。解:法1:先由已知條件畫圖,再后序遍歷得到結果;法2:不畫圖也能快速得出后序序列,只要找到根的位置特征。由前序先確定root,由中序先確定左子樹。例如,前序遍歷 BEFCGDH中,根結點在最前面,是B;則后序遍歷中B一定在最后面。法3:遞歸計算。如B在前序序列中第一,中序中在中間(可知左右子樹上有哪些元素),則在后序中必為最后。如法對B的左右子樹同樣處理,則問題得解。【全國專升本統(tǒng)考題】 中序遍歷的遞歸算法平均空間復雜度為 —O(n)_。答:即遞歸最大嵌套層數,即棧的占用單元數。精確值應為樹的深度 k+1,包括葉子的空域也遞歸了一次。9.【計算機研2001】用5個權值{3,2,4,5,1}構造的哈夫曼(Huffman)樹的帶權路徑長度是 33解:先構造哈夫曼樹,得到各葉子的路徑長度之后便可求出 WPL=(4+5+3)x2+(1+2)x3=33)5)(9)- "(6) (注:兩個合并值先后不同會導致編碼不同,即哈夫曼編碼不唯一)4 5 3 (3)-- (注:合并值應排在葉子值之后)(注:原題為選擇題:A.32 B.33 C.34 D.15)三、單項選擇題(每小題1分,共11分)(C)1.不含任何結點的空樹。(A)是一棵樹; (E)是一棵二叉樹;(C)是一棵樹也是一棵二叉樹; (D)既不是樹也不是二叉樹答:以前的標答是B,因為那時樹的定義是n>1(C)2?二叉樹是非線性數據結構,所以。(A)它不能用順序存儲結構存儲 ; (E)它不能用鏈式存儲結構存儲 ;(C)順序存儲結構和鏈式存儲結構都能存儲 ;(D)順序存儲結構和鏈式存儲結構都不能使用(C)3.〖01年計算機研題〗 具有n(n>0)個結點的完全二叉樹的深度為。(A) log2(n) (B)log2(n) (C) log2(n)+1 (D)log2(n)+1注1:x表示不小于x的最小整數; x表示不大于x的最大整數,它們與□含義不同!注2:選(A)是錯誤的。例如當n為2的整數冪時就會少算一層。 似乎log2(n)+1是對的?(A)4.把一棵樹轉換為二叉樹后,這棵二叉樹的形態(tài)是。(A)唯一的 (B)有多種(C)有多種,但根結點都沒有左孩子 (D)有多種,但根結點都沒有右孩子【94程P11】從供選擇的答案中,選出應填入下面敘述?內的最確切的解答,把相應編號寫在答卷的對應欄內。樹是結點的有限集合,它A—根結點,記為T。其余的結點分成為m(m>0)個旦的集合T1,T2,…,Tm,每個集合乂都是樹,此時結點 T稱為[的父結點,T.稱為T的子結點(1<i<m)一個結點的子結點個數為該結點的 C。供選擇的答案②有0個或多個③有且只有1個④有1個或1個以上A:①有0個或1個B:①互不相交②允許相交③允許葉結點相交④允許樹枝結點相交C:①權②維數③次數(或度)④序答:ABC=1,1:,3變: 【95程P13】從供選擇的答案中,選出應填入下面敘述?內的最確切的解答,把相應編號寫在答卷的對應欄內。二叉樹_A_。在完全的二叉樹中,若一個結點沒有 B ,則它必定是葉結點。每棵樹都能惟一地轉換成與它對應的二叉樹。由樹轉換成的二叉樹里,一個結點N的左子女是N在原樹里對應結點的 C,而N的右子女是它在原樹里對應結點的D。供選擇的答案A:①是特殊的樹 ②不是樹的特殊形式 ③是兩棵樹的總稱 ④有是只有二個根結點的樹形結構B:①左子結點 ②右子結點③左子結點或者沒有右子結點 ④兄弟CD:①最左子結點②最右子結點③最鄰近的右兄弟④最鄰近的左兄弟⑤最左的兄弟⑥最右的兄弟答案:A= B=C=D=答案:ABCDE=2,1,1,3四、簡答題(每小題4分,共20分)1.【嚴題集6.2①】一棵度為2的樹與一棵二叉樹有何區(qū)別?答:度為2的樹從形式上看與二叉樹很相似,但它的子樹是無序的,而二叉樹是有序的。即,在一般樹中若某結點只有一個孩子,就無需區(qū)分其左右次序,而在二叉樹中 即使是一個孩子也有左右之分。第7章圖-、單選題(每題1分,共16分) 前兩大題全部來自于全國自考參考書!(C)1.在一個圖中,所有頂點的度數之和等于圖的邊數的倍。A. 1/2 B.1 C.2 D.4(B)2.在一個有向圖中,所有頂點的入度之和等于所有頂點的出度之和的倍A. 1/2 B.1 C.2 D.4(B)3.有8個結點的無向圖最多有條邊。A.14 B.28 C.56 D.112(C)4?有8個結點的無向連通圖最少有條邊。TOC\o"1-5"\h\zA.5 B.6 C.7 D.8(C)5?有8個結點的有向完全圖有條邊。A.14 B.28 C.56 D.112(B)6.用鄰接表表示圖進行廣度優(yōu)先遍歷時,通常是采用 來實現(xiàn)算法A.棧 B.隊列 C.樹 的。(A)7.用鄰接表表示圖進行深度優(yōu)先遍歷時,通常是采用 來實現(xiàn)算法的A.棧 B.隊列 C.樹 D.圖1.2.3.4.5.6.、填空題(每空1分,共20分)圖有—鄰接矩陣_、—鄰接表—等存儲結構,遍歷圖有—深度優(yōu)先遍歷有向圖 廣度優(yōu)先遍歷—等方法。G用鄰接表矩陣存儲,其第i行的所有元素之和等于頂點如果n個頂點的的—出度_。圖是一個環(huán),則它有n棵生成樹。1.2.3.4.5.6.、填空題(每空1分,共20分)圖有—鄰接矩陣_、—鄰接表—等存儲結構,遍歷圖有—深度優(yōu)先遍歷有向圖 廣度優(yōu)先遍歷—等方

溫馨提示

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

評論

0/150

提交評論