鄭州大學(xué)遠(yuǎn)程教育學(xué)院數(shù)據(jù)結(jié)構(gòu)試題及答案_第1頁
鄭州大學(xué)遠(yuǎn)程教育學(xué)院數(shù)據(jù)結(jié)構(gòu)試題及答案_第2頁
鄭州大學(xué)遠(yuǎn)程教育學(xué)院數(shù)據(jù)結(jié)構(gòu)試題及答案_第3頁
鄭州大學(xué)遠(yuǎn)程教育學(xué)院數(shù)據(jù)結(jié)構(gòu)試題及答案_第4頁
鄭州大學(xué)遠(yuǎn)程教育學(xué)院數(shù)據(jù)結(jié)構(gòu)試題及答案_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 鄭州大學(xué)現(xiàn)代遠(yuǎn)程教育數(shù)據(jù)結(jié)構(gòu)課程(本科)學(xué)習(xí)指導(dǎo)書郭純一 編n 課程內(nèi)容與基本要求“數(shù)據(jù)結(jié)構(gòu)”在計算機(jī)科學(xué)中是一門綜合性的專業(yè)基礎(chǔ)課。本課程將主要介紹數(shù)據(jù)結(jié)構(gòu)的基本概念和術(shù)語、非數(shù)值計算中常用的數(shù)據(jù)結(jié)構(gòu)(線性表、棧和隊列、串、樹和圖)和基本技術(shù)(查找和排序方法)三大部分。本課程要求學(xué)生在掌握線性表、棧和隊列、串、樹和二叉樹、圖等基本數(shù)據(jù)類型的基礎(chǔ)上,會分析各種數(shù)據(jù)結(jié)構(gòu)的特性,會根據(jù)應(yīng)用需求為所涉及的數(shù)據(jù)合理選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)和存儲結(jié)構(gòu),并能據(jù)此設(shè)計實現(xiàn)問題的算法;還應(yīng)初步掌握算法的時間和空間效率的分析方法。n 課程學(xué)習(xí)進(jìn)度與指導(dǎo)章節(jié)課程內(nèi)容學(xué)時分配學(xué)習(xí)指導(dǎo)(均以課件學(xué)習(xí)為主)第一章緒論4學(xué)時

2、重點掌握基本概念和時間復(fù)雜度的計算方法第二章*線性表10學(xué)時重點掌握順序結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)表示線性表的方法和操作的實現(xiàn);結(jié)合具體例子理解編程實現(xiàn)一個問題的2種方法第三章棧和隊列8學(xué)時重點掌握棧和隊列的特點以及它們各自的存儲表示,尤其是順序棧和循環(huán)隊列的實現(xiàn);結(jié)合具體例子理解棧和隊列的應(yīng)用第四章串2學(xué)時重點掌握串的術(shù)語、串操作結(jié)果和不同存儲結(jié)構(gòu)的特點第七章*樹和二叉樹10學(xué)時重點掌握二叉樹的定義、存儲、性質(zhì)、遍歷算法(遞歸)及應(yīng)用、線索化;掌握樹和森林與二叉樹的轉(zhuǎn)換以及Huffman樹和Huffman編碼的構(gòu)造方法第八章圖8學(xué)時重點掌握圖的術(shù)語、存儲、遍歷算法及應(yīng)用;掌握最小生成樹的2種構(gòu)造方法及特

3、點、會求拓?fù)渑判蛐蛄泻蛦卧醋疃搪窂降诰耪?查找8學(xué)時重點掌握各種動態(tài)查找表的構(gòu)造過程、性能分析、插入/刪除方法;掌握靜態(tài)查找表的順序、折半和分塊查找及ASL求法第十章*排序8學(xué)時掌握關(guān)于排序的術(shù)語及分類方法;重點掌握插入排序、交換排序、選擇排序等內(nèi)排序方法及其性能分析方法第一章 緒論一、 章節(jié)學(xué)習(xí)目標(biāo)與要求1、 理解數(shù)據(jù)抽象和信息隱蔽原則 2、 掌握所有的基本概念和術(shù)語、掌握時間復(fù)雜度的計算方法、會用C語言描述抽象數(shù)據(jù)類型和算法;能夠熟練使用C語言編寫程序二、 本章重點、難點重點:基本概念和術(shù)語,C語言描述算法的方式,簡單程序的時間復(fù)雜度的求法。 難點:時間復(fù)雜度的計算方法和原則。三、 章節(jié)練

4、習(xí)(一)選擇題:1 具有線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)是_。A.圖 B. 樹 C. 集合 D. 棧2 計算機(jī)算法是指_。A.計算方法和運算結(jié)果 B.調(diào)度方法 C. 解決某一問題的有限運算系列 D. 排序方法3 線性結(jié)構(gòu)中,最后一個結(jié)點有_個后繼結(jié)點。 A. 0 B. 1 C. 任意多4. 算法分析的目的是_。A. 找出數(shù)據(jù)結(jié)構(gòu)的合理性 B. 研究算法中輸入和輸出的關(guān)系 C. 分析算法的效率以求改進(jìn) D.分析算法的可讀性和可行性5. 具有非線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)是_。A.圖 B. 線性表 C. 串 D. 棧6算法具有5個特性:_、_、_、輸入和輸出。A. 穩(wěn)定性、確定性、可行性 B. 有窮性、確定性、可行性C.

5、 有窮性、安全性、可行性 D. 有窮性、確定性、可移植性7設(shè)n為正整數(shù)。則下面程序段的時間復(fù)雜度為_。i=1; k=0; while(i=n-1) k+=10*i; i+; A.O(1) B. O(n) C. O(nlogn) D. O(n2)8設(shè)n為正整數(shù)。則下面程序段的時間復(fù)雜度為_。k=0; for(i=1;i=n;i+) for(j=i;jnext=NULL; B. p=NULL; C. p-next=head; D. p=head;4若在線性表的任何位置上插入元素的概率是相等的,那么在長度為n的順序表中插入一個元素時需平均移動_個元素。A. n B. (n-1)/2 C.n/2 D.

6、 (n+1)/25在帶頭結(jié)點的非空單鏈表中,頭結(jié)點的位置由_指示,首元結(jié)點的存儲位置由_指示,除首元結(jié)點外,其它任一元素結(jié)點的存儲位置由_指示。A. 頭指針 B. 頭結(jié)點的指針域的指針 C.前驅(qū)結(jié)點的指針域的指針6. 單鏈表的頭指針為p,若有頭結(jié)點,則表空的判斷條件是_;若不帶頭結(jié)點,則表空的判斷條件是_。A. p=NULL B. p-next=NULL C. p-next-next=NULL(二)判斷題:1在單鏈表中插入或刪除元素時是以結(jié)點的指針變化來反映邏輯關(guān)系的變化,因此不需要移動元素。 ( )2 順序表能夠以元素在計算機(jī)內(nèi)的物理位置的相鄰性來表示線性表中元素之間的邏輯關(guān)系。 ( )3.

7、 在不帶頭結(jié)點的非空單鏈表中,首元結(jié)點的存儲位置由頭指針指示,除首元結(jié)點外,其它任一元素結(jié)點的存儲位置由前驅(qū)結(jié)點的指針域的指針指示。 ( )(三)問答題:1若線性表要求以最快的速度存取而表中元素變動不大,則應(yīng)采取什么存儲結(jié)構(gòu)(順序或鏈?zhǔn)浇Y(jié)構(gòu))?為什么?2若線性表經(jīng)常做插入/刪除操作,則應(yīng)采取什么存儲結(jié)構(gòu)?為什么?3. 在單鏈表中設(shè)置頭結(jié)點有什么作用?(四)算法題:1.設(shè)帶頭結(jié)點的單鏈表(L為頭指針)中的數(shù)據(jù)元素遞增有序。設(shè)計算法,將x插入到鏈表的適當(dāng)位置上,并仍保持該表的有序性。2.設(shè)順序表va中的數(shù)據(jù)元素遞增有序。設(shè)計算法,將x插入到順序表的適當(dāng)位置上,并仍保持該表的有序性。3.設(shè)計算法,實

8、現(xiàn)單鏈表的就地逆置,即利用原表的存儲空間將線性表(a1,a2,an)逆置為(an ,an-1,a1)。第三章 棧和隊列一、 章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解用棧和隊列解決實際問題的方法。2、掌握棧和隊列的定義以及特性、它們的2種不同的存儲表示方法(特別是順序棧和循環(huán)隊列)以及各種常見操作(如入、出操作)在不同表示方式上的實現(xiàn)。二、本章重點、難點重點:棧和隊列的定義、各種表示和實現(xiàn)方法,加深對線性結(jié)構(gòu)的理解 難點:循環(huán)隊列的表示及為解決循環(huán)隊列隊空、隊滿判斷條件相同而使用的不同實現(xiàn)方式;能在具體問題中靈活運用棧和隊列結(jié)構(gòu)。三、章節(jié)練習(xí)(一)選擇題:1一個棧的入棧序列是a,b,c,d,e,則棧的不可能的

9、輸出序列是_。A. edcba B.decba C.dceab D.abcde2棧和隊列的共同點是_。 A. 都是后進(jìn)先出 B. 都是先進(jìn)先出 C. 都是只允許在端點處插入和刪除元素 D.無共同點3一個隊列的入隊序列是1,2,3,4,則隊列的輸出序列是_。 A. 4321 B. 1234 C. 1432 D. 32414棧的入棧序列是1,2,n,輸出序列為p1,p2,pn,若p1=n, 則pi為_。A. i B. n-i C. n-i+1 D. 不確定5隊列是限定在_進(jìn)行插入,在_進(jìn)行刪除的線性表。A. 隊頭 B. 隊尾 C. 任意位置6循環(huán)隊列中,設(shè)隊列元素依次存放在Q0.m中,f、r分別指

10、示隊頭元素位置和隊尾元素的下一個位置,約定存儲m個元素時為隊滿。則隊列空的判定方法是_,隊列滿的判定方法是_。A.f=r B. (f+1)%(m+1)=r C. (r+1)%(m+1)=f D. (r+1)% m=f(二)判斷題:1若用戶無法估計所用隊列的最大長度,則最好采用鏈隊列。 ( )2在鏈隊列上刪除隊頭元素時,只需修改頭結(jié)點中的指針,不必修改尾指針。 ( )3. 棧是限定僅在棧頂進(jìn)行插入或刪除操作的線性表。 ( )4. 隊列是限定在隊尾插入元素,在隊頭刪除元素的線性表。 ( )(三)問答與算法題:1對于一個棧,若輸入序列依次為A,B,C, 試給出所有可能的輸出序列。2假設(shè)將循環(huán)隊列定義

11、為:以整型域變量front和length分別指示循環(huán)隊列中隊頭元素位置和隊列中元素個數(shù),指針elem指示存放隊列元素的連續(xù)空間的首地址,寫出相應(yīng)的入隊列和出隊列的算法。第四章 串一、 章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解串的抽象數(shù)據(jù)類型的定義以及相關(guān)術(shù)語、理解串在文本編輯中的作用。2、掌握字符串的定義及各種基本操作的運算結(jié)果以及串的各種存儲表示的特點。二、本章重點、難點重點:串的基本運算、串的各種存儲表示和特點。繼續(xù)加深對線性結(jié)構(gòu)的理解 難點:串的不同存儲結(jié)構(gòu),區(qū)分它們和高級語言中串的存儲方式的不同。三、章節(jié)練習(xí)(一)選擇題:1設(shè)串s=I AM A STUDENT, 則其串長是_。 A. 13 B. 1

12、4 C. 15 D. 162. 設(shè)s =HE IS A WORKER,t=WORKER。則StrIndex(s,t,5)的返回值是_。A. 4 B. 5 C. 6 D. 9 E. 103. 串是一種特殊的線性表,其特殊性體現(xiàn)在_。A. 可以順序存儲 B. 數(shù)據(jù)元素是一個字符C. 可以鏈接存儲 D. 數(shù)據(jù)元素可以是多個字符4.已知串s=ABCDEFGH,則s的所有不同子串的個數(shù)為_。A. 8 B. 9 C. 36 D. 375.設(shè)串s=I am a teacher.,則s的第8個字符起、長度為7的子串為_。A. teacher. B. teacher C. a teacher D. teache

13、r6. 設(shè)串s=student.,t=“good ,則執(zhí)行StrInsert(s,1,t)后,s為_。A. good student. B. good student C. goodstudent D. good teacher(二)判斷題:1空串和空格串是相同的。 ( )2. 如果兩個串含有相同的字符,則它們是相同的。( )3. 串的基本操作和線性表的一樣,都是以“單個元素”作為操作對象的。 ( )4. 在串的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,結(jié)點大小與存儲密度之間沒有關(guān)系。 ( )第七章 樹和二叉樹一、章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解樹、二叉樹和森林的概念,理解線索化二叉樹的特性、創(chuàng)建方法及在線索二叉樹上尋找某結(jié)

14、點的前驅(qū)和后繼的方法;理解樹與森林的存儲方法。2、掌握二叉樹的性質(zhì)及表示;掌握二叉樹的各種遍歷方法(尤其是遞歸形式的)以及遍歷在實際問題中的應(yīng)用;掌握樹及森林與二叉樹的轉(zhuǎn)換及遍歷方式的對應(yīng);掌握Huffman樹的構(gòu)造方法以及構(gòu)造Huffman編碼的方法。二、本章重點、難點重點:二叉樹的性質(zhì)(及證明)、存儲結(jié)構(gòu)及各種遍歷算法,二叉樹的線索化過程,樹和森林與二叉樹的轉(zhuǎn)換關(guān)系,Huffman樹及Huffman編碼的構(gòu)造方法 難點:各種遍歷算法的遞歸實現(xiàn)以及在具體問題中能靈活運用遍歷思想解題三、章節(jié)練習(xí)(一)選擇題:1下列關(guān)于二叉樹的說法中,正確的有_。 A. 二叉樹的度為2 B. 二叉樹的度可以小于

15、2 C.二叉樹中至少有一個結(jié)點的度為2 D. 二叉樹中任一個結(jié)點的度都為22任何一棵二叉樹的葉子結(jié)點在先、中、后序遍歷序列中的相對次序_。A. 不發(fā)生改變 B. 發(fā)生改變 C. 不能確定 D. 以上都不對3下面幾個符號串編碼集合中,不是前綴編碼的是_。A. 0,10,110,1111 B. 11,10,001,101,0001C. 00,010,0110,1000 D. b,c,aa,ac,aba,abb,abc4二叉樹按某種順序線索化后,任意結(jié)點均有指向其前驅(qū)和后繼的線索,這種說法_。 A. 正確 B. 不正確 C. 無法確定(二)判斷題:1.哈夫曼樹是帶權(quán)葉子數(shù)目固定的二叉樹中帶權(quán)路徑長度

16、最小的。 ( )2.根據(jù)二叉樹的定義,具有3個結(jié)點的二叉樹有5種不同的形態(tài)。 ( )3. 深度為k的完全二叉樹至少有2k-1個結(jié)點,至多有2k1個結(jié)點。 ( )4. 具有n個結(jié)點的滿二叉樹,其葉子結(jié)點個數(shù)為個。 ( )5. 在哈夫曼樹中,通常權(quán)值較大的結(jié)點離根較遠(yuǎn)。 ( )(三)問答題:1下圖所示森林轉(zhuǎn)化為相應(yīng)的二叉樹,并在其上標(biāo)出中序全線索。2證明:深度為k的二叉樹上至多有2k-1個結(jié)點(k1)。3. 證明:任何一棵滿二叉樹中的分支數(shù)B滿足B=2(n01),其中n0為葉子結(jié)點個數(shù)。4. 以數(shù)據(jù)集15,3,14,2,6,9,16,17為葉子的權(quán)值構(gòu)造Huffman樹,畫出此樹并計算其帶權(quán)路徑長

17、度。(四)算法題:1. 假設(shè)二叉排序樹(t為指向根結(jié)點的指針)中各元素值均不相同,設(shè)計一個遞歸算法按遞增順序輸出樹上各元素值。2編寫遞歸算法, 交換二叉鏈表存儲的二叉樹中每個結(jié)點的左、右子樹。3. 編寫遞歸算法,求以二叉鏈表存儲的二叉樹的深度。4. 設(shè)計遞歸算法計算以二叉鏈表存儲的二叉樹的葉子結(jié)點數(shù)目。第八章 圖一、章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解圖的基本概念和術(shù)語。2、掌握圖的鄰接矩陣和鄰接表2種表示方法;掌握圖的兩種遍歷算法及其求解連通性問題的方法;掌握用Prim算法和Kruskal算法構(gòu)造最小生成樹的過程和性能分析;掌握AOV網(wǎng)的拓?fù)渑判蚍椒?(不要求算法),掌握用Dijkstra方法求解單源

18、最短路徑問題的方法(不要求算法)。二、本章重點、難點重點:圖的數(shù)組表示法和鄰接表表示法存儲結(jié)構(gòu)以及圖的兩種遍歷方式,求最小生成樹的兩種方法,AOV網(wǎng)的拓?fù)渑判蚍椒ǎ莆諉卧醋疃搪窂降那蠓y點:圖的兩種遍歷算法的實現(xiàn)以及在圖的連通性問題中的應(yīng)用三、章節(jié)練習(xí)(一)選擇題:1. 4個頂點的無向完全圖有_條邊。A. 6 B. 12 C. 16 D. 202無向圖的鄰接矩陣是一個_。A. 對稱矩陣 B. 零矩陣 C. 對角矩陣 D. 上三角矩陣3圖的廣度優(yōu)先遍歷算法類似于二叉樹的_,圖的深度優(yōu)先遍歷算法類似于二叉樹的_。A. 先序遍歷 B. 中序遍歷 C. 后序遍歷 D. 層序遍歷4. 對_,用Prim

19、算法求最小生成樹較為合適,而Kruskal算法適于構(gòu)造_圖的最小生成樹。A. 完全圖 B. 連通圖 C. 稀疏圖 D.稠密圖5. 對于含n個頂點、e條邊的無向連通圖,利用Prim算法構(gòu)造最小生成樹的時間復(fù)雜度_,用Kruskal算法構(gòu)造最小生成樹的時間復(fù)雜度為_。A. O(n) B. O(n2) C. O(e) D. O(eloge) F. O(e2)(二)判斷題:1. 若從無向圖的一個頂點出發(fā)進(jìn)行廣度優(yōu)先遍歷可訪問到圖中所有頂點,則該圖一定是連通圖。 ( )2. 若從無向圖的一個頂點出發(fā)進(jìn)行深度優(yōu)先遍歷可訪問到圖中所有頂點,則該圖一定是連通圖。 ( )3. 任何有向圖的頂點都可以排成拓?fù)溆行?/p>

20、序列,而且拓?fù)湫蛄胁晃ㄒ弧?( )4. 有n個頂點和n-1條邊的無向圖一定是生成樹。 ( )5. 一棵有n個頂點的生成樹有且僅有n-1條邊。 ( )6.連通分量是無向圖的極大連通子圖,而生成樹是無向圖的極小連通子圖。( )(三)問答及算法題:1. 一個圖的鄰接矩陣G.arcs=,該圖有多少個頂點?如果是有向圖,該圖共有多少條弧?如果是無向圖,該圖共有多少條邊?2.已知如右圖所示的有向圖,寫出該圖的: (1)鄰接矩陣 (2)一個可能的拓?fù)溆行蛐蛄?(3)寫出從1出發(fā)的深度優(yōu)先遍歷序列 (4)寫出從5出發(fā)的廣度優(yōu)先遍歷序列。3. 假設(shè)有5項活動C1C5,每項活動要求的前驅(qū)活動如下: C1:無; C

21、2:C1,C3; C3:C1; C4:C3,C5 C5:C2; 試根據(jù)上述關(guān)系,畫出相應(yīng)的有向圖,再寫出一個拓?fù)渑判蛐蛄小?4. 基于圖的深度優(yōu)先遍歷策略寫一算法,判斷以鄰接表方式存儲的無向圖中連通分量的個數(shù)。 第九章 查找一、章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解各種查找表的定義、各種查找方法的思想以及構(gòu)造查找表所依據(jù)的原則。2、掌握線性表表示的靜態(tài)查找表的順序查找和折半查找算法及其性能分析方法;掌握二叉排序樹的創(chuàng)建、查找、插入、刪除算法及其性能分析方法;掌握AVL樹的平衡化旋轉(zhuǎn)方法及其性能分析;掌握B-樹的插入和刪除時結(jié)點的分裂和合并方法;掌握Hash法的查找、構(gòu)造方法平均查找長度的計算方法。二、本章

22、重點、難點重點:各種樹結(jié)構(gòu)表示的動態(tài)查找表和Hash表的構(gòu)造方法難點:二叉排序樹的刪除、AVL樹的旋轉(zhuǎn)處理、B-樹的插入和刪除、Hash法的構(gòu)造以及各種查找表的平均查找長度的計算方法三、章節(jié)練習(xí)(一)選擇題:1. _二叉排序樹可得到一個關(guān)鍵字的有序序列。A. 先序遍歷 B. 中序遍歷 C. 后序遍歷 D. 層序遍歷2用鏈地址法處理沖突構(gòu)造的散列表中,每個地址單元所鏈接的同義詞表中結(jié)點的_相同。 A. 關(guān)鍵字 B. 元素值 C. 散列地址 D. 含義3利用折半查找方法在長度為n的有序表中查找一個元素的平均查找長度是_。A.O(n2) B.O(nlogn) C.O(n) D. O(logn)4散列

23、表的裝填因子越大,則發(fā)生沖突的可能性就_。A. 越小 B. 越大 C. 不確定5線性表中共有256個元素,采用分塊查找,若查找每個元素的概率相等,用順序查找確定結(jié)點所在的塊,每塊有_個元素時查找效率最佳。A. 16 B. 20 C. 25 D. 2566用折半查找對長度為7的有序表進(jìn)行查找,則等概率下查找成功時的平均查找長度為_。 A. 15/7 B. 17/7 C. 18/7 D. 19/77有序表(1,32,41,45,62,75,77,82,95,100),使用折半查找關(guān)鍵字為95的元素時,需要經(jīng)過_次比較后才能查找成功。 A. 2 B. 3 C. 4 D.5(二)判斷題:1. 折半查找

24、和二叉排序樹的查找時間性能一樣。 ( )2. 在任意一棵非空的二叉排序樹中,刪除某結(jié)點后又將其插入,則所得的二叉排序樹與刪除前的二叉排序樹形態(tài)相同。 ( )3. 根據(jù)B-樹的定義,在9階B-樹中,除根以外的任何一個非葉子結(jié)點中的關(guān)鍵字?jǐn)?shù)目均在59之間。 ( )4.折半查找時,要求線性表必須是有序的且以順序結(jié)構(gòu)存儲。 ( )(三)問答題:1. 設(shè)有一組關(guān)鍵字序列19,1,23,14,55,20,84,27,68,11,40,(1) 按表中元素順序構(gòu)造一棵二叉排序樹,畫出這棵樹,并求其在等概率情 況下查找成功時的平均查找長度。(2)從空樹開始,按表中元素順序構(gòu)造一棵2_3樹(3階B_樹),若此后再

25、刪除55,84,畫出每一步執(zhí)行后2_3樹的狀態(tài)。2. 設(shè)散列函數(shù)H(key)=key MOD 7,用線性探測再散列法解決沖突。對關(guān)鍵字序列 13,28,72,5,16,8,7,11 在地址空間為0-10的散列區(qū)中建散列表,畫出此表,并求等概率情況下查找成功時的平均查找長度。3. 關(guān)鍵字序列:13,28,72,5,16,18,7,11,24,h (key) = key mod 11,表長為11,用線性探測再散列處理沖突,試填寫下表并計算每個關(guān)鍵字的比較次數(shù)和等概率情況下查找成功時的平均查找長度。012345678910哈希表比較次數(shù)ASL=4. 在地址空間為0-16的散列區(qū)中,對以下關(guān)鍵字序列(

26、Jan,Feb,Mar,Apr,May, June,July,Aug,Sep,Oct,Nov,Dec)按鏈地址法處理沖突構(gòu)造散列表,設(shè)散列函數(shù)H(x)=i/2,其中i為關(guān)鍵字中第一個字母在字母表中的序號。畫出該散列表并求在等概率情況下查找成功時的平均查找長度。第十章 排序一、章節(jié)學(xué)習(xí)目標(biāo)與要求1、理解排序相關(guān)的定義以及排序方法的各種分類,理解各種排序方法的基本思想和依據(jù)原則。2、掌握內(nèi)部排序的基本概念和性能分析方法;掌握插入排序、交換排序、選擇排序等內(nèi)排序的方法及其性能分析方法。二、本章重點、難點重點:各類內(nèi)部排序方法所依據(jù)的原則、特點及典型算法。難點:希爾排序、快速排序、堆排序三、章節(jié)練習(xí)(

27、一)選擇題:1. 下列方法中,_是穩(wěn)定的排序方法。A堆排序 B. 希爾排序 C. 快速排序 D. 折半插入排序2. 設(shè)有1000個無序的元素,希望用最快的速度選出其中前20個最大的元素,最好用_排序方法。A. 冒泡排序 B. 快速排序 C. 堆排序 D. 希爾排序3下列序列中,_是堆。A. 12,35,20,60,40,30 B. 100,85,120,38,10,9,36 C. 1,5,6,24,7,3,4 D. 38,24,15,20,30,464在待排序的元素序列基本有序時,效率最高的排序方法是_ _。A.插入排序 B.選擇排序 C.快速排序 D. 歸并排序5在下列排序方法中,某一趟結(jié)束

28、后未必能選出一個元素放在其最終位置上的是_。A. 堆排序 B. 起泡排序 C. 快速排序 D. 直接插入排序6對序列22,86,19,49,12,30,65,35,18進(jìn)行一趟排序后得到的結(jié)果為18,12,19,22,49,30,65,35,86,則其使用的排序方法為_。A. 插入排序 B. 選擇排序 C. 快速排序 D. 起泡排序7. 下列方法中,_算法的時間復(fù)雜度為O(n2)。 A. 堆排序 B. 希爾排序 C. 快速排序 D. 直接插入排序8. 對n個記錄的序列進(jìn)行堆排序,最壞情況下的時間復(fù)雜度為_。 A. O(logn) B. O(nlogn) C. O(n) D.O(n2)(二)判斷

29、題:1.快速排序的速度在所有排序方法中是最快的,而且所需的附加空間也最少。( )2.對一個堆按層次遍歷,不一定能得到一個有序序列。 ( )3.由于希爾排序的最后一趟與直接插入排序過程相同,所以前者一定比后者花費的時間多。 ( )4.快速排序算法在待排序數(shù)據(jù)有序時最不利于發(fā)揮其長處。 ( )(三)問答題:1.在快速排序過程中,通常取序列中的第1個記錄作為樞軸,以它為“分界線”重排其余記錄。但當(dāng)初始記錄序列按關(guān)鍵字有序或基本有序時,快速排序?qū)⑼懟癁槠鹋菖判?,為改進(jìn)之,應(yīng)如何選取樞軸記錄?2.判斷以下序列是否是堆,若不是,把它調(diào)整為堆(要求記錄交換次數(shù)最少),寫出調(diào)整后的序列。1) 5,26,20,

30、60,80,35,53,70 2) 26,33,35,29,19,12,22 3.已知關(guān)鍵字序列70,83,100,65,10,9,7,32,寫出直接插入排序和快速排序每一趟結(jié)束時的關(guān)鍵字狀態(tài)。4.設(shè)關(guān)鍵字集合為10,2,14,8,12,13,(1)寫出用希爾排序方法對序列排序時每一趟結(jié)束時的關(guān)鍵字狀態(tài)。(2)用堆排序方法對其從小到大排序,畫出堆排序的初態(tài)、建堆和排序過程中重建堆的過程??荚嚹M題客觀題部分一、單項選擇題:(每空2分,共20分)1. 單鏈表是線性表的一種_的存儲結(jié)構(gòu)。 A. 順序存取 B. 隨機(jī)存取 C. 索引存取2. 棧和隊列的共同點是_。 A. 都是后進(jìn)先出 B. 都是先進(jìn)

31、先出 C. 都是只允許在端點處插入和刪除元素 D.無共同點3. 設(shè)s=HE IS A WORKER,t=WORKER。則index(s,t,5)的返回值是_。A. 4 B. 5 C. 6 D. 9 E. 104. 串是一種特殊的線性表,其特殊性體現(xiàn)在_。A. 可以順序存儲 B. 數(shù)據(jù)元素是一個字符 C. 可以鏈接存儲 D. 數(shù)據(jù)元素可以是多個字符5 樹最適合用來表示_。A. 有序數(shù)據(jù)元素 B. 無序數(shù)據(jù)元素 C 元素之間具有分支層次關(guān)系的數(shù)據(jù) D. 元素之間無關(guān)聯(lián)的數(shù)據(jù)6 4個頂點的無向完全圖有_條邊。 A. 6 B. 12 C. 16 D. 207 散列表的裝填因子越大,則發(fā)生沖突的可能性就

32、_。A. 越小 B. 越大 C. 不確定 8. 在長度為n的有序表中折半查找一個元素的平均查找長度是_。A.O(n2) B.O(nlogn) C.O(n) D. O(logn)9. 下列方法中,_是不穩(wěn)定的排序方法。A. 折半插入排序 B. 直接插入排序 C. 冒泡排序 D. 堆排序10_二叉排序樹可得到一個關(guān)鍵字的有序序列。A. 先序遍歷 B. 中序遍歷 C. 后序遍歷 D. 層序遍歷二、是非題:(每題1分,共10分)(說明:正確的選“A”,錯誤選“B” )1 線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈?zhǔn)酱鎯Y(jié)構(gòu)。 ( ) 2 空串和空格串是相同的。 ( )3 圖結(jié)構(gòu)中,每個結(jié)點的前驅(qū)和后續(xù)都可以有任意多個

33、。 ( )4 快速排序算法在待排序數(shù)據(jù)有序時最不利于發(fā)揮其長處。 ( )5 連通網(wǎng)的最小生成樹是唯一的。 ( )6 棧是FIFO的線性表。 ( )7 由二叉樹的先序和后序遍歷序列不能唯一確定這棵二叉樹。( )8 若從無向圖的一個頂點出發(fā)進(jìn)行廣度優(yōu)先遍歷可訪問到圖中的所有頂點,則該圖一定是連通圖。 ( )9 折半查找方法要求查找表必須是關(guān)鍵字的有序表,但是對存儲結(jié)構(gòu)沒有限制。 ( )10 在一棵非空二叉樹的中序遍歷序列中,根結(jié)點的右邊只有其右子樹上的所有結(jié)點。 ( )主觀題部分一、簡答題:(50分)1. 若線性表要求以最快的速度存取而表中元素變動不大,則應(yīng)采取什么存儲結(jié)構(gòu)(順序或鏈?zhǔn)浇Y(jié)構(gòu))?為什

34、么?(10分)2.將下圖所示森林轉(zhuǎn)化為二叉樹并在其上標(biāo)出中序全線索。(10分)3.已知如右圖所示的有向圖,寫出該圖的: (1)鄰接矩陣 (2)一個可能的拓?fù)溆行蛐蛄小?(10分) 4設(shè)散列函數(shù)H(key)=key MOD 7,用線性探測再散列法解決沖突。對關(guān)鍵字序列 13,28,72,5,16,8,7,9,11,29 在地址空間為0-10的散列區(qū)中建散列表,畫出此表,并求等概率情況下查找成功時的平均查找長度。(10分)5對于序列 26,33,35,29,19,12,22 ,(1)判斷它是否是堆,若是,寫出其是大頂堆還是小頂堆;若不是,把它調(diào)整為堆,寫出調(diào)整的過程和調(diào)整后的序列。 (5分)(2)

35、寫出對該序列進(jìn)行直接插入排序每一趟結(jié)束時的關(guān)鍵字狀態(tài)。(5分)二、算法設(shè)計題:(20分)1、編寫遞歸算法,計算二叉鏈表存儲的二叉樹的結(jié)點數(shù)目。(10分)2、基于圖的深度優(yōu)先遍歷策略寫一算法,判斷以鄰接表方式存儲的無向圖中連通分量的個數(shù)。 (10分)附:答案或答案要點第一章章節(jié)練習(xí)答案(一)選擇題: 1D 2C 3A 4C 5A 6B 7B 8D(二)判斷題: 1 2 3. 4第二章章節(jié)練習(xí)答案(一)選擇題: 1B, A 2C 3C 4C 5A, B, C 6.B, A(二)判斷題: 1 2 3(三)問答題:1 應(yīng)采用順序結(jié)構(gòu)。因為順序表是隨機(jī)存取的存儲結(jié)構(gòu),在順序表中存取任何元素所花的時間都一

36、樣。而鏈表是順序存取的存儲結(jié)構(gòu)。2 應(yīng)采用鏈?zhǔn)浇Y(jié)構(gòu)。因為在鏈表中是以結(jié)點的指針變化來反映邏輯關(guān)系的變化,因此不需要移動元素,效率高。3 頭結(jié)點在位置上可視為首元結(jié)點的前驅(qū),則做插入/輸出操作時,i=1(即插入或刪除的位置是1)時不需要做特別處理,否則i=1時需要修改頭指針。(四)算法題:1 status insert_L (LinkList L, ElemType x)/*帶頭結(jié)點*/ LinkList p,s; for (p=L; p-next & p-next-datanext); s=(LinkList )malloc(sizeof(LNode); if (!s) return OVER

37、FLOW; s-data=x; s-next=p-next; p-next=s; return OK; 2status insert_Sq(SqList *va,ElemType x) int i;if( va-length=va-listsize) exit OVERFLOW; for( i=va-length-1;i=0 & va-elemix;-i) va-elemi+1= va-elemi; va-elemi+1=x; va-length+;return OK;3void reverse(LinkList L)/*帶頭結(jié)點*/ LinkList p; p=L-next; L-next=

38、NULL; for(; p; p=p-next) q=p-next; p-next=L-next; L-next=p; 第三章章節(jié)練習(xí)答案(一)選擇題:1.C 2.C 3. B 4.C 5. B, A 6. A,C(二)判斷題:1 2 3 4(三)問答與算法題:1 所有可能的輸出序列有:ABC、ACB、BAC、BCA、CBA2算法:#define MAXQSIZE 100typedef struct ElemType *elem; int front; int length; CycQueue; status EnQueue(CycQueue *Q, ElemType e) if (Q-len

39、gth=MAXQSIZE) return ERROR; Q-elem(Q-front+Q-length) % MAXQSIZE=e; Q-length+; return OK; status DeQueue(CycQueue *Q, ElemType *e) if (Q-length=0) return ERROR; *e= Q-elemQ-front; Q-length - -; return OK; 第四章章節(jié)練習(xí)答案(一)選擇題:1.B 2. D 3. B 4. D 5. B 6. A(二)判斷題:1. 2. 3. 4.第七章章節(jié)練習(xí)答案(一)選擇題:1. B 2. A 3. B 4.

40、B(二)判斷題:1. 2. 3. 4. 5. (三)問答題:12證明:由于深度為k的二叉樹的最大結(jié)點數(shù)為二叉樹上每一層的最大結(jié)點數(shù)之和,而二叉樹上第i層的最大結(jié)點數(shù)為2i-1。則3. 證明:設(shè)n0為葉子結(jié)點個數(shù),n2為度為2的結(jié)點個數(shù),則由二叉樹的性質(zhì)2可知: n2= n01又:滿二叉樹中只有度為2的結(jié)點和葉子結(jié)點,所以滿二叉樹中的結(jié)點總數(shù)n= n2+ n0=2 n01又:二叉樹中的分支數(shù)B=n1所以:B=2 n011=2(n01)4.wpl=(16+17)*2+(9+14+15)*3+6*4+(2+3)*5=229(四)算法題:1 void output(BiTree t) if (t) o

41、utput(t-lchild); printf(t-data); output(t-rchild); 2. void exchange(BiTree t) BiTree temp; if (t) temp=t-lchild; t-lchild= t-rchild; t-rchild=temp; exchange (t- lchild); exchange (t-rchild); 3. int depth(BiTree t) int l,r; if (!t) return 0; l= depth (t-lchild); r= depth (t-rchild); return (l=r?l:r)+

42、1; 4. void leaf(BiTree t) if (!t) return 0; if (!t-lchild & !t-rchild) return 1; return leaf(t-lchild)+leaf(t-rchild); 第八章章節(jié)練習(xí)答案(一)選擇題: 1.A 2.A 3.D, A 4.D, C 5.B, D(二)判斷題: 1. 2. 3. 4. 5. 6. (三)問答及算法題:1. 圖中共有3個頂點,如果是有向圖,該圖共有5條??;如果是無向圖,該圖共有3條邊。2.(1)鄰接矩陣: (2)可能的拓?fù)湫蛄袨椋?(注意4一定是最后一個,2一定在1和5后)(3)(4)3. 一個拓?fù)渑判蛐蛄校篊1 C3 C2 C5 C4 4算法: int count (AlGraph G) for (i=0; iG.vexnum; i+) visitedi=false; sum=0; for (i=0; inextarc) k=p-adjvex; if (!visitedk) df

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論