全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬-三級數(shù)據(jù)庫_第1頁
全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬-三級數(shù)據(jù)庫_第2頁
全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬-三級數(shù)據(jù)庫_第3頁
全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬-三級數(shù)據(jù)庫_第4頁
全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬-三級數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

全國計(jì)算機(jī)等級考試考點(diǎn)解析、例題精解與應(yīng)試模擬一一三

級數(shù)據(jù)庫

第2章數(shù)據(jù)結(jié)構(gòu)與算法

※本章大綱要求:

(1)基本概念

(2)線性表

(3)多維數(shù)組、稀疏矩陣和廣義表

(4)樹形結(jié)構(gòu)

(5)查找

(6)排序

※重要考點(diǎn)提示:

根據(jù)對歷年真題的分析可知,本章考核內(nèi)容約占15%,主要包括

以下幾個(gè)方面:

(1)數(shù)據(jù)結(jié)構(gòu)和算法的基本概念

(2)數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)

(3)順序表和一維數(shù)組

(4)鏈表、棧、隊(duì)列、串的概念與操作

(5)稀疏矩陣的存儲(chǔ)、廣義表的定義與存儲(chǔ)

(6)二叉樹的定義、存儲(chǔ)與表示、線索二叉樹

(7)樹與二叉樹的轉(zhuǎn)換、二叉樹的周游算法

(8)霍夫曼算法及其應(yīng)用

(9)靜態(tài)表、動(dòng)態(tài)表的查找

(10)各種排序算法,插入排序、選擇排序、交換排序、歸并排

2.1基本概念

考點(diǎn)1:數(shù)據(jù)結(jié)構(gòu)的基本概念★

(1)數(shù)據(jù)

數(shù)據(jù)就是采用計(jì)算機(jī)能夠識(shí)別、存儲(chǔ)和處理的方式,對現(xiàn)實(shí)世界

的事物進(jìn)行的描述,簡而言之,數(shù)據(jù)就是計(jì)算機(jī)化的信息。

數(shù)據(jù)元素是數(shù)據(jù)的基本單位。一個(gè)數(shù)據(jù)元素可由一個(gè)或多個(gè)數(shù)據(jù)

項(xiàng)組成,數(shù)據(jù)項(xiàng)是有獨(dú)立含義的數(shù)據(jù)最小單位。

(2)數(shù)據(jù)結(jié)構(gòu)

數(shù)據(jù)結(jié)構(gòu)一般包括3個(gè)方面的內(nèi)容:數(shù)據(jù)之間的邏輯關(guān)系、數(shù)據(jù)

在計(jì)算機(jī)中的存儲(chǔ)方式以及在這些數(shù)據(jù)上定義的運(yùn)算的集合。

a.數(shù)據(jù)的邏輯結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)

元素間的邏輯關(guān)系,而不管其在計(jì)算機(jī)中的存儲(chǔ)方式。數(shù)據(jù)的邏輯結(jié)

構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。

b.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器里的實(shí)現(xiàn)。

c.數(shù)據(jù)的運(yùn)算定義在數(shù)據(jù)的邏輯結(jié)構(gòu)上,而實(shí)現(xiàn)是在存儲(chǔ)結(jié)構(gòu)

±0主要的運(yùn)算包括插入、刪

除、排序、查找等。

考點(diǎn)2:主要的數(shù)據(jù)存儲(chǔ)方式★

實(shí)現(xiàn)數(shù)據(jù)的邏輯結(jié)構(gòu)到計(jì)算機(jī)存儲(chǔ)器的映像有多種不同的方式。

最主要的存儲(chǔ)方式有順序存儲(chǔ)儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)方式。

(1)順序存儲(chǔ)結(jié)構(gòu)

順序存儲(chǔ)結(jié)構(gòu)是將邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物理上相鄰的

存儲(chǔ)單元中,結(jié)點(diǎn)之間的關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來體現(xiàn),其主要

特點(diǎn)是:

a.結(jié)構(gòu)中只有自身信息域,沒有鏈接信息域,因此,存儲(chǔ)密度

大,存儲(chǔ)空間利用率高;

b.可以通過計(jì)算直接確定數(shù)據(jù)結(jié)構(gòu)中第i個(gè)結(jié)構(gòu)的存儲(chǔ)地址;

c.插入、刪除運(yùn)算會(huì)引起大量結(jié)構(gòu)的移動(dòng)。

(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是在每個(gè)結(jié)點(diǎn)中至少包括一個(gè)指針域,用指針來體

現(xiàn)數(shù)據(jù)元素之間邏輯上的聯(lián)系。其主要特點(diǎn)是:

a.存儲(chǔ)密度小,存儲(chǔ)空間利用率低;

b.邏輯上相鄰的結(jié)點(diǎn)物理上不必鄰接,可用于線性表、樹、圖

等多種邏輯結(jié)構(gòu)的存儲(chǔ)表示;c.插入、刪除操作靈活方便,不必移

動(dòng)結(jié)點(diǎn)。

考點(diǎn)3:算法的設(shè)計(jì)與分析

算法的設(shè)計(jì)采用由粗到細(xì)、由抽象到具體的逐步求精的方法。

算法分析主要是分析算法所要占用的計(jì)算機(jī)資源,即時(shí)間代價(jià)和

空間代價(jià)兩個(gè)方面。

a.時(shí)間代價(jià)是當(dāng)問題的規(guī)模以某種單位由1增至n時(shí)解決該問

題的算法運(yùn)行時(shí)所耗費(fèi)的時(shí)間,也以某種單位由f(l)增至f(n),則稱

該算法的時(shí)間代價(jià)為f(n)

b.空間代價(jià)是當(dāng)問題的規(guī)模由1增至n時(shí)-,解決該問題的算法

實(shí)現(xiàn)時(shí)所占用的空間也以某種單位由g(l)增至g(n),則稱該算法的空

間代價(jià)為g(n)o

2.2線性表

考點(diǎn)4:順序表和一維數(shù)組

線性表的邏輯結(jié)構(gòu)是n個(gè)數(shù)據(jù)元素的有限序列(al,a2,…,an)。

按存儲(chǔ)方式不同線性表可以分為:順序存儲(chǔ)的順序表、鏈?zhǔn)酱鎯?chǔ)的鏈

表、散列存儲(chǔ)的散列。

順序表是用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)數(shù)據(jù)元素的線性

表,其邏輯相鄰的數(shù)據(jù)元素具有相鄰的物理(存儲(chǔ))位置。對數(shù)據(jù)元

素進(jìn)行插入、刪除操作時(shí)需要移動(dòng)數(shù)據(jù)元素,存儲(chǔ)空間被分配后難以

再被擴(kuò)充。

各種高級語言中的一維數(shù)組就是用順序方式存儲(chǔ)的線性表,因此

也常用一維數(shù)組來稱呼順序表。

考點(diǎn)5:鏈表★

鏈表的特點(diǎn)是可以用一組任意的存儲(chǔ)單元來存儲(chǔ)線性表的各個(gè)

數(shù)據(jù)元素,不要求邏輯上相鄰的元素物理上也相鄰。鏈表的優(yōu)點(diǎn)是插

入、刪除等操作不需要移動(dòng)元素,只需要修改指針,比較靈活,缺點(diǎn)

是不能隨機(jī)存取。

鏈表可以分為線性鏈表和雙向鏈表兩種,前者也稱為單鏈表,每

個(gè)結(jié)點(diǎn)中只有一個(gè)指向后一個(gè)結(jié)點(diǎn)的指針;后者每個(gè)結(jié)點(diǎn)有兩個(gè)指針,

一個(gè)指向直接前驅(qū)結(jié)點(diǎn),一個(gè)指向直接后繼結(jié)點(diǎn)。?18?

考點(diǎn)6:棧與隊(duì)列十

棧與隊(duì)列都是對操作位置加以限制的線性表。可以使用順序存儲(chǔ)

也可以采用鏈?zhǔn)酱鎯?chǔ)。

棧的插入和刪除只能發(fā)生在線性表的一端,允許插入、刪除的這

一端稱為棧頂,另一個(gè)固定端稱為棧底。當(dāng)表中沒有元素時(shí)稱為空棧。

棧是按“后進(jìn)先出”的規(guī)則進(jìn)行操作的。棧的常用運(yùn)算主要包括入棧

(push)、出棧(pop)和取棧頂元素(top)。

棧是使用最為廣泛的數(shù)據(jù)結(jié)構(gòu)之一,表達(dá)式求值、遞歸過程實(shí)現(xiàn)

都是棧應(yīng)用的典型例子。隊(duì)列的插入只能在線性表的一端進(jìn)行,而

刪除在線性表的另一端進(jìn)行,允許插入的一端叫隊(duì)尾(rear),允許刪

除的一端叫隊(duì)頭()隊(duì)列是按“先進(jìn)先出”的規(guī)則進(jìn)行操作的。

front0

隊(duì)列常用的運(yùn)算有入隊(duì)()、出隊(duì)()和取隊(duì)首元素()

enqdeqfront0

隊(duì)列在計(jì)算機(jī)中應(yīng)用也十分廣泛,硬件設(shè)備中的各種排隊(duì)器、緩

沖區(qū)的循環(huán)使用技術(shù)、操作系統(tǒng)中的作業(yè)隊(duì)列等都是隊(duì)列應(yīng)用的例子。

考點(diǎn)7:串

串(或字符串)是由零個(gè)或多個(gè)字符組成的有限序列,零個(gè)字符

的串是空串。串的存儲(chǔ)方式有:順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。順序存儲(chǔ)時(shí)可

以采用非緊縮方式,也可以采用緊縮方式。

串的基本運(yùn)算有連接、賦值、求長度、全等比較、求子串、求子

串位置以及替換等。其中找子串位置(也稱模式匹配)是非常重要的

一種運(yùn)算。

2.3多維數(shù)組、稀疏矩陣和廣義表

考點(diǎn)8:多維數(shù)組的線性存儲(chǔ)★

多維數(shù)組是一維數(shù)組的推廣,其特點(diǎn)是結(jié)構(gòu)中的元素本身可以是

具有某種結(jié)構(gòu)的數(shù)據(jù),但屬于同一數(shù)據(jù)類型。多維數(shù)組中最常用的是

二維數(shù)組。

多維數(shù)組的存儲(chǔ)方式一般是多維數(shù)組中的元素放在一個(gè)線性序

列中,排列方式可以是行優(yōu)先順序或列優(yōu)先順序。二維數(shù)組第i行、

第j列元素aij存儲(chǔ)地址的計(jì)算公式為:

行優(yōu)先順序:LOC(aij)=LOC(all)+((i?l)*n+(j?D)*?

列優(yōu)先順序:LOC(aij)=LOC(all)+((j?l)*m+(i?l))*?

式中m和n分別為數(shù)組中每列和每行的元素個(gè)數(shù),?為每個(gè)數(shù)組

元素占用的存儲(chǔ)單元個(gè)數(shù)??键c(diǎn)9:稀疏矩陣的存儲(chǔ)

具有大量0元素的矩陣稱為稀疏矩陣。對稀疏矩陣進(jìn)行壓縮存儲(chǔ),

即只存儲(chǔ)非0元素。

對非0元素的分布有規(guī)律的矩陣,如下三角矩陣,按行優(yōu)先順序

存儲(chǔ),非零元素的存儲(chǔ)地址用下式計(jì)算:

LOC(aij)=LOC(all)+(i*(i?l)/2+(j?l))*?

對一般的稀疏矩陣,可以采用三元組方法或十字鏈表方法存儲(chǔ)。

前者是按行優(yōu)先順序存儲(chǔ)非零元素所在的行、列以及它的值構(gòu)成的三

元組,后者則采用十字鏈表。

考點(diǎn)10:廣義表的定義和存儲(chǔ)

廣義表是線性表的推廣,也稱為列表,是由零個(gè)或多個(gè)單元素或

子表所組成的有限序列。廣義表與線性表的區(qū)別在于:線性表的成分

都是結(jié)構(gòu)上不可分的單元素,而廣義表的成分既可以是單元素,又可

以是有結(jié)構(gòu)的表。

廣義表的特征:

廣義表的元素可以是子表,而子表的元素還可以是子表。

-19-

廣義表可被其他廣義表所共享。

廣義表可以是遞歸的表,即廣義表也可以是本身的一個(gè)子表。

2.4樹形結(jié)構(gòu)

考點(diǎn)11:樹及二叉樹的定義及表示★

樹是一個(gè)或多個(gè)結(jié)點(diǎn)組成的有限集合T,有一個(gè)特定的結(jié)點(diǎn)稱為

根,其余結(jié)點(diǎn)分為m(m2。)個(gè)不相交的集合Tl,T2,?,Tm。每

個(gè)集合又是一棵樹,被稱為這個(gè)根的子樹。這是樹的遞歸定義。

樹的性質(zhì)有以下4條:

(1)樹中的結(jié)點(diǎn)數(shù)等于所有結(jié)點(diǎn)的度數(shù)加1。

(2)度為k的樹中第i層上至多有ki?l個(gè)結(jié)點(diǎn)021)。

(3)深度為h的k叉樹至多有(kh?l)/(k?l)個(gè)結(jié)點(diǎn)。

(4)具有n個(gè)結(jié)點(diǎn)的k叉樹的最小深度為?logk(n(k?l)+l)?

二叉樹是樹形結(jié)構(gòu)的一個(gè)重要類型。二叉樹是結(jié)點(diǎn)的有限集合,

這個(gè)有限集合或者為空集,或者由一個(gè)根結(jié)點(diǎn)及兩棵不相交的分別稱

做這個(gè)根的左子樹和右子樹的二叉樹組成。

二叉樹不是樹的特殊情況,樹與二叉樹之間最主要的區(qū)別是:二

叉樹的子樹有左右之分,其次序不能顛倒,即使是在只有一棵子樹的

情況下也要明確指出該子樹是左子樹還是右子樹。

在一棵二叉樹中,如果最多只有最下面兩層結(jié)點(diǎn)度數(shù)可以小于2,

并且最下面一層結(jié)點(diǎn)都集中在最左邊的位置上,這樣的一棵二叉樹稱

為完全二叉樹。

樹與二叉樹可以互相轉(zhuǎn)化,樹(樹林)轉(zhuǎn)換為二叉樹的算法:在

一棵樹中,凡是兄弟結(jié)點(diǎn)就用線連起來,然后去掉父結(jié)點(diǎn)到子結(jié)點(diǎn)的

連線,只保留父結(jié)點(diǎn)到第一個(gè)子結(jié)點(diǎn)的連線。如果把森林中第二棵樹

的根結(jié)點(diǎn)看成是第一棵樹的根結(jié)點(diǎn)的兄弟結(jié)點(diǎn),則同樣可以導(dǎo)出森林

與二叉樹的對應(yīng)關(guān)系。

把二叉樹轉(zhuǎn)換為樹的算法:若某結(jié)點(diǎn)是其雙親的左孩子,則把該

結(jié)點(diǎn)的右孩子,右孩子的右孩子??,都與該結(jié)點(diǎn)雙親用線連起來,最

后去掉所有的雙親到右孩子的連線。

考點(diǎn)12:二叉樹與樹的周游★

遍歷一個(gè)樹形結(jié)構(gòu)就是按一定的次序系統(tǒng)地訪問樹上的所有結(jié)

點(diǎn),使每個(gè)結(jié)點(diǎn)恰好被訪問一次。

由二叉樹的定義可知,一棵二叉樹由3部分組成:根、左子樹和

右子樹。因此對二叉樹的遍歷也可相應(yīng)地分為3類先序(根)遍歷、

中序(對稱序)遍歷、后序(根)遍歷。

先序遍歷:訪問根結(jié)點(diǎn);先序遍歷左子樹;先序遍歷右子樹。

中序(對稱序)遍歷:中序遍歷左子樹;訪問根結(jié)點(diǎn);中序遍歷

右子樹。

后序遍歷:后序遍歷左子樹;后序遍歷右子樹;訪問根結(jié)點(diǎn)。

由于樹也是一種層次結(jié)構(gòu),所以對樹有時(shí)也進(jìn)行按層遍歷,所謂

按層遍歷,就是從樹根結(jié)點(diǎn)開始,依次訪問每一層,對同一層結(jié)點(diǎn),

由左至右進(jìn)行訪問。

樹和森林的遍歷也主要有三種:先根次序、后根次序和層次次序。

其中,前兩種是按深度優(yōu)先方式進(jìn)行的,后一種是按廣度優(yōu)先方式進(jìn)

行的。

根據(jù)樹和二叉樹的對應(yīng)關(guān)系,可以看出,按先序遍歷樹正好等同

于按先序遍歷對應(yīng)的二叉樹;按后序遍歷樹正好等同于按對稱序法遍

歷對應(yīng)的二叉樹。

-20-

考點(diǎn)13:二叉樹的存儲(chǔ)與線索二叉樹

(1)二叉樹的Llink?Hink法存儲(chǔ)

二叉樹通常的存儲(chǔ)方式是鏈?zhǔn)酱鎯?chǔ),每個(gè)鏈結(jié)點(diǎn)除了數(shù)據(jù)域外,

還可以增加兩個(gè)指針域llink和rlink,分別指向左右兩個(gè)子結(jié)點(diǎn)。當(dāng)

某個(gè)結(jié)點(diǎn)的子結(jié)點(diǎn)不存在時(shí),相應(yīng)的指針值為空(nil)。

(2)線索二叉樹

一個(gè)具有n個(gè)結(jié)點(diǎn)的二叉樹若采用二叉鏈表存儲(chǔ)結(jié)構(gòu),在2n個(gè)

指針域中只有n?l個(gè)指針域是用來存儲(chǔ)結(jié)點(diǎn)孩子的地址的,而另外

n+1個(gè)指針域存放的都是niL為了保留結(jié)點(diǎn)在某種遍歷序列中直接前

驅(qū)和直接后繼的位置信息、,可以利用二叉樹的二叉鏈表存儲(chǔ)結(jié)構(gòu)中的

這n+1個(gè)空指針域來記錄這些信息。這些指向直接前驅(qū)結(jié)點(diǎn)和指向直

接后繼結(jié)點(diǎn)的指針被稱為線索(thread),加了線索的二叉樹稱為線

索二叉樹。

(3)完全二叉樹的順序存儲(chǔ)

二叉樹的順序存儲(chǔ),就是用一組連續(xù)的存儲(chǔ)單元存放二叉樹中的

結(jié)點(diǎn)。一般是按照二叉樹結(jié)點(diǎn)從上至下、從左到右的順序存儲(chǔ)。完全

二叉樹或者滿二叉樹比較適合于順序存儲(chǔ)。

考點(diǎn)14:霍夫曼算法及其應(yīng)用★

霍夫曼(Huffman)樹,也稱為最優(yōu)二叉樹,是指對于一組帶有

確定權(quán)值的葉結(jié)點(diǎn),構(gòu)造的具有最小帶權(quán)路徑長度的二叉樹。

設(shè)二叉樹具有n個(gè)帶權(quán)值的葉結(jié)點(diǎn),那么從根結(jié)點(diǎn)到各個(gè)葉結(jié)點(diǎn)

的路徑長度與相應(yīng)結(jié)點(diǎn)權(quán)值的乘積之和叫做二叉樹的帶權(quán)路徑長度,

記為:

WPL??Wk?Lk

k?ln

其中Wk為第k個(gè)葉結(jié)點(diǎn)的權(quán)值,Lk為第k個(gè)葉結(jié)點(diǎn)的路徑長度。

最優(yōu)二叉樹算法為:對于n個(gè)權(quán)為wl,w2,w3,…,wn的結(jié)點(diǎn),

首選找出兩個(gè)最小的wi值,不妨設(shè)為wl和w2,然后對m?l個(gè)權(quán)

wl+w2,w3,…,,wn來解這個(gè)問題,并且將解中的代替,如此進(jìn)行

下去,直到所有的w構(gòu)成一棵二叉樹。

給定一組權(quán)值,構(gòu)造出來的霍夫曼樹不是唯一的。在霍夫曼樹中,

權(quán)值大的結(jié)點(diǎn)離根最近。另外,在霍夫曼樹中,沒有度為1的結(jié)點(diǎn)。

2.5查找

考點(diǎn)15:線性表的查找

查找是確定一個(gè)元素在表或樹中的位置,衡量一個(gè)查找算法的標(biāo)

準(zhǔn)是對關(guān)鍵碼平均比較的次數(shù),或稱為平均檢索長度ASL。對于線性

表的查找主要分下面幾種:

(1)順序查找

順序查找是線性表的最簡單的查找方法,其具體步驟是:用待查

關(guān)鍵碼從頭開始逐個(gè)與表中元素比較,直到找出相等的元素,則查找

成功;或者找遍所有元素,則查找失敗。

順序查找的優(yōu)點(diǎn):對線性表的結(jié)點(diǎn)的邏輯次序無要求,對線性表

的存儲(chǔ)結(jié)構(gòu)無要求。

順序查找的缺點(diǎn):平均檢索長度長,與表中結(jié)點(diǎn)個(gè)數(shù)n成正比,

若檢索關(guān)鍵碼的概率相等,則

-21-

查找成功時(shí)平均比較次數(shù)為(n+l)/2。查找不成功時(shí);關(guān)鍵碼的比

較次數(shù)總是n+1次。

(2)二分查找

二分查找法是一種效率較高的線性表查找方法,要求線性表結(jié)點(diǎn)

必須是按關(guān)鍵碼值排好序的,且線性表以順序方式存儲(chǔ)。其具體步驟

是:首選用要查找的關(guān)鍵碼值與線性表中間位置結(jié)點(diǎn)的關(guān)鍵碼值相比

較,這個(gè)中間結(jié)點(diǎn)把線性表分成兩個(gè)子表,比較相等則查找完成,不

等則根據(jù)比較結(jié)果確定下一步的查找應(yīng)該在哪一個(gè)子表中進(jìn)行,如此

進(jìn)行下去,直到找到滿足要求的點(diǎn)。

二分查找的優(yōu)點(diǎn):平均查找長度小,為??Iog2n??

二分查找的缺點(diǎn):線性表排序需要花費(fèi)時(shí)間,順序方式存儲(chǔ)的插

入、刪除不便。

(3)分塊查找

分塊查找要求把線性表分成若干塊,每一塊中的結(jié)點(diǎn)不必有序,

但塊與塊之間必須有序,還要求將各塊中的最大關(guān)鍵碼值組成一個(gè)有

序的索引表。其具體步驟是:首選在索引表中用順序查找或二分查找

法確定所求記錄所在的塊,然后再從該塊中用順序查找方法找出所求

的記錄。

(4)散列表查找

散列法的基本思想是:由結(jié)點(diǎn)的關(guān)鍵碼決定結(jié)點(diǎn)的存儲(chǔ)地址,即

以關(guān)鍵碼k為自變量,通過散列函數(shù)計(jì)算出對應(yīng)的函數(shù)值h(k),將這

個(gè)值解釋為結(jié)點(diǎn)的存儲(chǔ)地址。檢索時(shí)再根據(jù)要檢索的關(guān)鍵碼值用同樣

的方法計(jì)算出結(jié)點(diǎn)位置。

散列法需要解決以下兩個(gè)問題:

a.構(gòu)造好的散列函數(shù),能夠?qū)⒁唤M關(guān)鍵碼值盡可能均勻地安排

在事先確定的范圍里,并且使得發(fā)生碰撞的可能性最小。常見的散列

函數(shù)有直接定址法除余法、數(shù)字分析法、折疊法、平方取中法等。

b.制定解決碰撞的方案。處理碰撞的方法主要有拉鏈法和開放

定址法。

影響產(chǎn)生沖突多少有以下三個(gè)因素:哈希函數(shù)是否均勻;處理沖

突的方法;哈希表的負(fù)載因子。散列表的負(fù)載因子公式:

??散列表中結(jié)點(diǎn)的數(shù)目基本區(qū)域能容納的結(jié)點(diǎn)數(shù)

負(fù)載因子的大小體現(xiàn)散列表的裝滿程度,?越大,則散列表裝得

越滿,發(fā)生碰撞的機(jī)會(huì)越大,一般取??1。

考點(diǎn)16:樹形結(jié)構(gòu)與查找山

(1)二叉排序樹

二叉排序樹是一類特殊的二叉樹,其特點(diǎn)是:若左子樹不空,則

左子樹上所有結(jié)點(diǎn)的值均小于根結(jié)點(diǎn)的值;若右子樹不空,則右子樹

上所有結(jié)點(diǎn)的值均大于根結(jié)點(diǎn)的值;所有的子樹也遵守相同的規(guī)則。

對二叉排序樹中序遍歷(周游)可以得到關(guān)鍵字從小到大的有序

序列。對無序序列可以通過構(gòu)造一棵二叉排序樹而變成一個(gè)有序序列,

構(gòu)造二叉排序樹的過程就是對無序序列進(jìn)行排序的過程。

對二叉排序樹的操作主要的插入和刪除操作。

平衡二叉樹是對二叉排序樹的一種“平衡化”處理。結(jié)點(diǎn)的平衡

因子定義為其右子樹高度減去左子樹高度。若任一結(jié)點(diǎn)的平衡因子均

取一1,0或+1,則此二叉排序樹為平衡的二叉排序樹(AVL樹)。平

衡二叉排序樹的查找方法與一般的二叉排序樹完全一樣,優(yōu)點(diǎn)是總能

保持檢索長度為O(log2n)量級。

往平衡二叉樹插入新結(jié)點(diǎn)時(shí),需要對樹的結(jié)構(gòu)進(jìn)行必要調(diào)整,以

動(dòng)態(tài)地保持平衡二叉樹的特點(diǎn)。?22?

(2)B樹和B+樹

B樹和B+樹是一種平衡的多路查找樹形結(jié)構(gòu),用于組織外存儲(chǔ)器

中文件的動(dòng)態(tài)索引結(jié)構(gòu)。這樣可以使得每個(gè)結(jié)點(diǎn)包含多個(gè)關(guān)鍵碼值,

有多個(gè)孩子,使得樹的層次降低,查找時(shí)訪問外存的次數(shù)減少。

由B樹定義可以知:

a.m階B樹每一個(gè)結(jié)點(diǎn)最多有m個(gè)子樹。

b.m階B樹根結(jié)點(diǎn)或?yàn)槿~結(jié)點(diǎn),或至少有兩棵子樹;中間結(jié)點(diǎn)

至少有?m/2?棵子樹。

c.m階B樹任一結(jié)點(diǎn)的左右子樹的高度都相等。

B樹的主要操作是:查找、插入、刪除。

在m階B樹上插入關(guān)健碼的過程為:

a.B樹是從空樹開始,逐個(gè)插入關(guān)鍵碼而生成的。

b.在B樹中,每個(gè)非葉結(jié)點(diǎn)的關(guān)鍵碼個(gè)數(shù)都在[?m/2??l,m?l]

之間。

c.B樹中關(guān)鍵碼的插入不是在葉結(jié)點(diǎn)上進(jìn)行的,而是在最底層

的某個(gè)非終端結(jié)點(diǎn)中添加一個(gè)關(guān)鍵碼。若插入結(jié)點(diǎn)上關(guān)鍵碼個(gè)數(shù)不超

過m?l個(gè),則可直接插入到該結(jié)點(diǎn)上;否則,要進(jìn)行調(diào)整,即結(jié)點(diǎn)

的“分裂”。

根據(jù)B+樹的定義可知:

a.有n棵子樹的結(jié)點(diǎn)中含有n個(gè)關(guān)鍵碼。

b.所有關(guān)鍵碼均出現(xiàn)在葉結(jié)點(diǎn)中,上層關(guān)鍵碼均是下層相應(yīng)結(jié)

點(diǎn)中最大關(guān)鍵碼的重復(fù),且葉子結(jié)點(diǎn)所有關(guān)鍵碼是有序的。

c.對B+樹進(jìn)行兩種查找運(yùn)算:一種是從最小關(guān)鍵碼起順序查找,

另一種是從根結(jié)點(diǎn)開始,進(jìn)行隨機(jī)查找。

2.6排序

考點(diǎn)17:插入排序

插入排序的基本思想是每次將一個(gè)待排序記錄按其關(guān)鍵碼值大

小插入到前面已排序的文件中的合適位置上,直到記錄插入完為止。

a.直接插入排序:在已排好序的序列中查找插入位置時(shí)用順序

法查找,找到插入位置后將該位置原來的記錄及其后面所有的記錄順

序后移一個(gè)位置,空出該位置來插入記錄。

b.二分法插入排序:在已排好的序列中找插入的位置時(shí),用二

分法查找,找到插入位置后和直接插入排序法同樣處理。

c.shell排序:又稱縮小增量法,是按增量將文件分組。首先取

增量dl<n,把全部記錄分成dl個(gè)組,所有距離為dl倍數(shù)的記錄

放在一組中,各組內(nèi)用插入法排序,然后取d2<dl,重復(fù)上述分組

和排序工作,直至取d=l,即所有記錄放在一個(gè)組中為止。

考點(diǎn)18:選擇排序支

選擇排序的基本思想是每次從待排序的記錄中選出關(guān)鍵碼值最

?。ɑ蜃畲螅┑挠涗洠樞蚍旁谝雅庞涗浶蛄械淖詈?,直到全部排完,

這里主要講堆排序

堆排序是對一組待排序的關(guān)鍵碼,首先把它們按堆的定義排成一

個(gè)序列(稱為建堆),這就找到了最小的關(guān)鍵碼,然后將最小的關(guān)鍵

碼取出,用剩下的關(guān)鍵碼再建堆,便得到次最小的關(guān)鍵碼,如此反復(fù)

進(jìn)行,直至將全部關(guān)鍵碼排好序?yàn)橹埂?/p>

堆排序的兩個(gè)主要問題:

-23-

(1)如何將n個(gè)元素的序列按關(guān)鍵碼建成堆。

(2)輸出堆頂元素后,如何調(diào)整剩余元素使之成為一個(gè)新堆。

考點(diǎn)19:交換排序十

交換排序主要是起泡排序和快速排序。

a.起泡排序是將排序的記錄順次兩兩比較,若為逆序則進(jìn)行交

換,將序列照此方法從頭到尾處理一遍稱做一趟起泡。第二趟起泡再

將次最大關(guān)鍵碼交換到倒數(shù)第二個(gè)位置,即它的最終位置,如此進(jìn)行

下去,若某一趟起泡過程中沒有發(fā)生任何交換,或排序已經(jīng)進(jìn)行了

n?l趟,則排序過程結(jié)束。

b.快速排序是在待排序序列中任取一個(gè)記錄,以它為基準(zhǔn)用交

換的方法將所有的記錄分成兩部分,關(guān)鍵碼值比它小的一個(gè)部分,關(guān)

鍵碼值比它大的在另一部分,再分別對兩個(gè)部分實(shí)施上述過程,一直

重復(fù)到排序完成。

考點(diǎn)20:歸并排序歸并排序的基本思想是對兩個(gè)或兩個(gè)以上的

表組合成一個(gè)新的有序表。排序方法為先將原始序列中的每個(gè)關(guān)鍵字

都看作一個(gè)序列,兩兩有序歸并,逐步擴(kuò)大于序列尺寸,直到全部排

序完成。

2.7經(jīng)典題解

一、選擇題

1.下列哪一個(gè)術(shù)語與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)有關(guān)。(2007.09)

A)棧

C)鏈表B)隊(duì)列D)線性表

解析:數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器里的實(shí)現(xiàn),如

鏈表。數(shù)據(jù)的邏輯結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元

素間的邏輯關(guān)系,而不管其在計(jì)算機(jī)中的存儲(chǔ)方式。邏輯結(jié)構(gòu)分為線

性結(jié)構(gòu)(如線性表、棧、隊(duì)列)和非線性結(jié)構(gòu)(如樹)。

答案:c

2.下列關(guān)于數(shù)據(jù)的邏輯結(jié)構(gòu)的敘述中,哪一條是不正確的。

(2007.09)

A)數(shù)據(jù)的邏輯結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的描述

B)數(shù)據(jù)的邏輯結(jié)構(gòu)不僅反映數(shù)據(jù)間的邏輯關(guān)系,而且包括其在

計(jì)算機(jī)中的存儲(chǔ)方式

C)數(shù)據(jù)的邏輯結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)

D)線性表是典型的線性結(jié)構(gòu)

解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)

據(jù)元素間的邏輯關(guān)系,而不管其在計(jì)算機(jī)中的存儲(chǔ)方式,在計(jì)算機(jī)中

的存儲(chǔ)是由存儲(chǔ)結(jié)構(gòu)決定的。邏輯結(jié)構(gòu)分為線性結(jié)構(gòu)(如線性表、棧、

隊(duì)列)和非線性結(jié)構(gòu)(如樹)。

答案:B

3.下列關(guān)于數(shù)據(jù)運(yùn)算的敘述中,哪一條是不正確的o(2007.09)

A)數(shù)據(jù)運(yùn)算是數(shù)據(jù)結(jié)構(gòu)的一個(gè)重要方面

B)數(shù)據(jù)運(yùn)算的具體實(shí)現(xiàn)在數(shù)據(jù)的邏輯結(jié)構(gòu)上進(jìn)行

C)檢索是一種常用的運(yùn)算

D)插入是一種常用的運(yùn)算

解析:數(shù)據(jù)的運(yùn)算定義在數(shù)據(jù)的邏輯結(jié)構(gòu)上,而實(shí)現(xiàn)是在存儲(chǔ)結(jié)

構(gòu)上。主要的運(yùn)算包括插入、刪除、排序、查?24?

找等。

答案:B

4.棧結(jié)構(gòu)不適用于下列哪一種運(yùn)用。(2007.09)

A)表達(dá)式求值

B)快速排序算法的實(shí)現(xiàn)

C)樹的層次次序周游算法的實(shí)現(xiàn)

D)二叉樹對稱序周游算法的實(shí)現(xiàn)

解析:樹的層次次序周游算法需要先存儲(chǔ)每一層的結(jié)點(diǎn),然后按

照先進(jìn)后出的順序依次訪問結(jié)點(diǎn)信息、,需要用先進(jìn)先出的隊(duì)列來實(shí)現(xiàn),

而不是用先進(jìn)后出的棧來實(shí)現(xiàn);表達(dá)式求值,需要設(shè)置操作數(shù)和操作

符兩個(gè)棧;快速排序需要用棧實(shí)現(xiàn)遞歸;二叉樹對稱序周游算法即中

序周游算法,也需要用棧結(jié)構(gòu)實(shí)現(xiàn)。

答案:C

5.雙鏈表的每個(gè)結(jié)點(diǎn)包括兩個(gè)指針域。其中Hink指向結(jié)點(diǎn)的后

繼,llink指向結(jié)點(diǎn)的前驅(qū)。如果要在p所指結(jié)點(diǎn)后插入q所指的新結(jié)

點(diǎn),下列哪一個(gè)操作序列是正確的。(2007.09)

A)pf.rlinkf.llink:=q;pt.rlink:=q;qt.llink:=p;qf.rlink:=p

t.rlink;

B)pt.llinkf.rlink:=q;pt.llink:=q;qt.rlink:=p;qt.llink:=p

t.llink;

C)qf.llink:=p;qt.rlink:=pt.rlink;pt.rlinkt.llink:=q;p

t.rlink:=q;

D)qf.rlinkf:=p;qt.llink:=pf.llink;pf.llinkf.rlink:=q;p

f.llink:=q;

解析:需要先將待插入結(jié)點(diǎn)q的左指針更新為p,然后將q右指

針的信息更新為p的右指針?biāo)赶蚪Y(jié)點(diǎn),再將p的右指針?biāo)附Y(jié)點(diǎn)的

左指針信息更新為q,最后將p的右指針信息更新為q。

答案:C

6.在包含1000個(gè)元素的線性表中實(shí)現(xiàn)如下運(yùn)算,哪一個(gè)所需執(zhí)

行時(shí)間最長。(2007.09)

A)線性表按順序方式存儲(chǔ),在線性表的第100個(gè)結(jié)點(diǎn)后面插入

一個(gè)新結(jié)點(diǎn)

B)線性表按鏈接方式存儲(chǔ),在線性表的第100個(gè)結(jié)點(diǎn)后面插入

一個(gè)新結(jié)點(diǎn)

C)線性表按順序方式存儲(chǔ),刪除線性表的第900個(gè)結(jié)點(diǎn)

D)線性表按鏈接方式存儲(chǔ),刪除指針P所指向的結(jié)點(diǎn)

解析:線性表按順序方式存儲(chǔ),執(zhí)行插入操作時(shí)要將插入點(diǎn)后的

所有元素平移一個(gè)單位,在1000個(gè)元素的線性表的第100個(gè)結(jié)點(diǎn)后

插入新結(jié)點(diǎn)需要移動(dòng)900個(gè)元素。鏈接方式存儲(chǔ)插入新結(jié)點(diǎn)需要查找

100次找到結(jié)點(diǎn)再插入。線性表按順序方式存儲(chǔ),刪除第900個(gè)元素

要將第900?1000個(gè)元素向前移動(dòng)一個(gè)單位。按鏈接方式存儲(chǔ),刪除

指針P指向結(jié)點(diǎn),其平均查找長度為500.5。查找開銷比移動(dòng)開銷要

答案:B

7.設(shè)某散列表的當(dāng)前狀態(tài)如下:

該散列表的負(fù)載因子約為。(2007.09)

A)0.37B)0.42C)0.58D)0.73

解析:散列表的負(fù)載因子公式:

pqnewnode-25-

??散列表中結(jié)點(diǎn)的數(shù)目

基本區(qū)域能容納的結(jié)點(diǎn)數(shù)

由題可知負(fù)載因子為7/19=0.37

答案:A

8.設(shè)有關(guān)鍵碼序列(Q、G、M、Z、A、N、B、P、X、H、Y、S、

T、L、K、E),采用堆排序法進(jìn)行排序,經(jīng)過初始建堆后關(guān)鍵碼值A(chǔ)

在序列中的序號是。(2007.09)

A)1

C)8B)4D)12

解析:堆排序是將待排序的關(guān)鍵碼先按堆的定義排成一個(gè)序列

(稱為建堆),找到最小的關(guān)鍵碼,然后將最小的關(guān)鍵碼取出,用剩

下的關(guān)鍵碼再建堆,便得到次最小的關(guān)鍵碼,如此反復(fù)進(jìn)行,直至將

全部關(guān)鍵碼排好序?yàn)橹?。所以初始建堆關(guān)鍵碼A即為堆頂,序號為lo

答案:A

9.對n個(gè)記錄的文件進(jìn)行起泡排序,所需要的輔助存儲(chǔ)空間

為。(2007.09)

A)0(1)

C)O(n).B)O(log2n)D)O(n)2

解析:起泡排序僅需一個(gè)輔助存儲(chǔ)空間作為記錄在交換位置時(shí)的

緩存空間。

答案:A

10.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)基本概念的敘述中,哪一條是不正確的。

(2007.04)

A)數(shù)據(jù)是采用計(jì)算機(jī)能夠識(shí)別、存儲(chǔ)和處理的方式,對現(xiàn)實(shí)世

界的事物進(jìn)行的描述

B)數(shù)據(jù)元素(或稱結(jié)點(diǎn)、記錄等)是數(shù)據(jù)的基本單位

C)一個(gè)數(shù)據(jù)元素至少由兩個(gè)數(shù)據(jù)項(xiàng)組成

D)數(shù)據(jù)項(xiàng)是有獨(dú)立含義的數(shù)據(jù)最小單位

解析:一個(gè)數(shù)據(jù)元素可由一個(gè)或若干個(gè)數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是有

獨(dú)立含義的不可分割的數(shù)據(jù)的最小單位。數(shù)據(jù)是所有能輸入到計(jì)算機(jī)

中并被計(jì)算機(jī)程序識(shí)別、存儲(chǔ)和處理的符號的總稱。

答案:C

11.下列關(guān)于鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的敘述中,哪些是正確的。

(2007.04)

I.邏輯上相鄰的結(jié)點(diǎn)物理上不必鄰接

II.每個(gè)結(jié)點(diǎn)都包含恰好一個(gè)指針域

III.用指針來體現(xiàn)數(shù)據(jù)元素之間邏輯上的聯(lián)系

IV.可以通過計(jì)算機(jī)直接確定第i個(gè)結(jié)點(diǎn)的存儲(chǔ)地址

V.存儲(chǔ)密度小于順序存儲(chǔ)結(jié)構(gòu)

A)I、II和II

B)I、II、III和IVD)I、山和VC)II、IV和V

解析:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中除了包含保存數(shù)據(jù)元素自身信息的信息域

外,還有表示數(shù)據(jù)元素之間的鏈接信息的指針域,因此比順序存儲(chǔ)結(jié)

構(gòu)的存儲(chǔ)密度低;鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中邏輯上相鄰的數(shù)據(jù)元素在物理上不

一定相鄰;不是所有節(jié)點(diǎn)都包含指針域,如單向鏈表中最后一個(gè)節(jié)點(diǎn)

的指針為空。

答案:D

12和13基于以下描述:有一個(gè)初始為空的棧和輸入序列A、B、

C、E、F、G:現(xiàn)發(fā)過如下操作:

push,push,top,pop,push,push,top,push,pop,pop,pop.

12.下列哪一個(gè)是正確的從棧中刪除元素的序列。(2007.04)

A)BEB)BD

-26-

C)BEDCD)BDEC

解析:棧的操作遵循后進(jìn)先出的原則。題中的操作依次為:A進(jìn)

棧、B進(jìn)棧、B讀取、B刪除、C進(jìn)棧、D進(jìn)棧、E進(jìn)棧、E刪除、D

刪除、C刪除。由此可見刪除的序列為BEDC。

答案:C

13.下列哪一個(gè)是上述操作序列完成后棧中的元素列表(從底到

頂)。(2007.04)

A)A

B)BDC)ABCE

答案:A

14—15基于如下所示的二叉樹。

D)ABCDE解析:通過上題的分析可知,在操作過程中進(jìn)棧的有

ABCDE,刪除的有BEDC,因此最后棧中的元素只有A。14.該二叉

樹對應(yīng)的樹林包括幾棵樹。(2007.04)

A)1B)2C)3D)4

解析:二叉樹轉(zhuǎn)換為樹林時(shí),二叉樹的根就是樹林第一棵樹的根;

二叉樹的左子樹轉(zhuǎn)換為樹林的第一棵樹,二叉樹的右子樹對應(yīng)于樹林

中其余的樹;二叉樹右子樹的根節(jié)點(diǎn)作為余下樹中第一棵樹的根節(jié)點(diǎn),

其余以此類推。本題中的二叉樹應(yīng)該包含2棵樹。

答案:B

15.按后根次序周游該二叉樹對應(yīng)的樹林,所得到的結(jié)點(diǎn)序列為

(2007.04)

A)DBAFEGC

C)DBFGECAB)ABCDEFGD)ACBEGDF

解析:后序遍歷二叉樹的次序是:后序遍歷左子樹,后序遍歷右

子樹,訪問根節(jié)點(diǎn)。因此后序遍歷此二叉樹對應(yīng)的樹林所得的節(jié)點(diǎn)序

列為選項(xiàng)Co

答案:C

16.按層次次序周游該二叉對應(yīng)的樹林,所得到的結(jié)點(diǎn)序列為。

(2007.04)

A)DBAFEGC

C)DBFGECAB)ABCDEFGD)ACBEGDF

解析:按層次次序遍歷二叉樹的次序是:從樹的根節(jié)點(diǎn)開始,依

次訪問每一層,對同一層節(jié)點(diǎn),由左到右進(jìn)行訪問。因此按層次次序

遍歷此二叉樹對應(yīng)的樹林所得的節(jié)點(diǎn)序列為選項(xiàng)B。

答案:B

17.設(shè)待排序關(guān)鍵碼序列為(25,18,9,33,67,82,53,95,

12,70),要按關(guān)鍵碼值遞增的順序進(jìn)行排序,采取以第一個(gè)關(guān)鍵碼

為分界元素的快速排序法,第一趟排序完成后關(guān)鍵碼95被放到第幾

個(gè)位置。(2007.04)

A)7

C)9

處在第8個(gè)位置。B)8D)10解析:快速排序法

第一趟排序后,關(guān)鍵碼序列為(12,18,9,25,67,82,53,95,33,

70),因此關(guān)鍵碼95

-27-

答案:B

18.設(shè)散列表的地址空間為0到:16,散列函數(shù)為h(k)=kmodl7,

用線性探查法解決碰撞?,F(xiàn)從空的散列表開始,依次插入關(guān)鍵碼值

190,89,217,208,75,177,則最后一個(gè)關(guān)鍵碼177的地址為。

(2007.04)

A)6

C)8B)7D)9

解析:本題采用除留余數(shù)法構(gòu)造散列函數(shù),將關(guān)鍵碼值190,89,

217,208,75,177分別帶入h(k)=kmodl7,得到散列地址分別為3,

4,13,4,7,7,在存儲(chǔ)關(guān)鍵碼208時(shí),由于其散列地址4與前面的

一個(gè)關(guān)鍵碼發(fā)生沖突,因此其存儲(chǔ)地址向后移1位到5。而存儲(chǔ)關(guān)鍵

碼177時(shí),由于其散列地址7與前面的一個(gè)關(guān)鍵碼發(fā)生沖突,因此其

存儲(chǔ)地址再向后移1位到8o

答案:C

19.下列哪些是數(shù)據(jù)結(jié)構(gòu)研究的內(nèi)容。(2006.09)

I.數(shù)據(jù)的采集

V.數(shù)據(jù)的檢索

A)II和IV

B)I、II和IIID)I、III和VC)IK川和VII.數(shù)據(jù)的邏

輯組織IV.數(shù)據(jù)的傳輸III.數(shù)據(jù)的存儲(chǔ)實(shí)現(xiàn)

解析:數(shù)據(jù)的采集和數(shù)據(jù)的檢索不屬于數(shù)據(jù)結(jié)構(gòu)研究的內(nèi)容。數(shù)

據(jù)結(jié)構(gòu)一般包括三方面內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu),它是從邏輯關(guān)系上描

述數(shù)據(jù),與數(shù)據(jù)的存儲(chǔ)無關(guān)。數(shù)據(jù)的存儲(chǔ)器內(nèi)表示,它是指用計(jì)算機(jī)

語言實(shí)現(xiàn)的邏輯結(jié)構(gòu),它依賴于計(jì)算機(jī)語言。數(shù)據(jù)的運(yùn)算,即對數(shù)據(jù)

施加的操作。

答案:C

20.下列關(guān)于數(shù)據(jù)元素的敘述中,哪一項(xiàng)是不正確的。

(2006.09)

A)數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個(gè)體

B)數(shù)據(jù)元素是有獨(dú)立含義的數(shù)據(jù)最小單位

C)數(shù)據(jù)元素又稱作結(jié)點(diǎn)

D)數(shù)據(jù)元素又稱作記錄

解析:數(shù)據(jù)項(xiàng)是具有獨(dú)立含義的最小標(biāo)識(shí)單位,而非數(shù)據(jù)元素。

數(shù)據(jù)元素是數(shù)據(jù)的基本單位,一個(gè)數(shù)據(jù)元素可以由若干個(gè)數(shù)據(jù)項(xiàng)組成,

有時(shí)也稱作結(jié)點(diǎn)、記錄、表目等。

答案:B

21.下列關(guān)于數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)的敘述中,哪一項(xiàng)是正確的。

(2006.09)

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的抽象描述

B)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器中的實(shí)現(xiàn)

C)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)

D)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)對數(shù)據(jù)運(yùn)算的具體實(shí)現(xiàn)沒有影響

解析:數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器中的

表示,又稱數(shù)據(jù)的物理結(jié)構(gòu)。分為順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。數(shù)

據(jù)采用不同的存儲(chǔ)結(jié)構(gòu),將對數(shù)據(jù)運(yùn)算的具體實(shí)現(xiàn)有著巨大的影響。

答案:B

22.棧S最多能容納4個(gè)元素?,F(xiàn)有6個(gè)元素按A、B、C、D、E、

F的順序進(jìn)棧,下列哪一個(gè)序列是可能的出棧序列。(2006.09)

A)E、D、C、B、A、F

C)C、B、E、D、A、FB)B、C、E、F、A、DD)A、D、

F、E、B、C

解析:對于選項(xiàng)A,因?yàn)樵摋W疃嘀荒苋菁{4個(gè)元素,而E是第

五個(gè)元素,在前4個(gè)元素還沒出棧的情況下是不可能進(jìn)棧再出棧的。

對于選項(xiàng)B,A元素不可能在D元素還沒出棧的情況下先出棧;對于

選項(xiàng)C,其出棧序列為:?28?

C、B、E、D、A、F;對于選項(xiàng)D,B元素不可能在C元素還沒出

棧情況下出棧,出棧序列為選項(xiàng)C。

答案:C

23.從單鏈表中刪除指針s所指結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn)3其關(guān)鍵運(yùn)

算步驟為。(2006.09)

A)st.link:=t

B)tf.link:=sD)st.link:=tf.linkC)tt.link:=st.link

解析:要從單鏈表中刪除指針-s所指節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)t,則原

節(jié)點(diǎn)t指的后繼節(jié)點(diǎn)成為s所指的后繼節(jié)點(diǎn),因此關(guān)鍵運(yùn)算步驟為:

stJink:=tt.linko

答案:D

24.按行優(yōu)先順序存儲(chǔ)下三角矩陣

?allO?aa22Ann??21

?????anlan20??0???????ann??

的非零元素,則計(jì)算非零元素aij(lWiWjWn)的地址公式為

(2006.09)

A)LOC(aij)?LOC(all)?i?(i?l)/2?j

B)LOC(aij)?LOC(all)?i?(i?l)/2?(j?l)

C)LOC(aij)?LOC(all)?i?(i?l)/2?j

D)LOC(aij)?LOC(all)?i?(i?l)/2?(j?l)

解析:非零元素aij在矩陣中處在第i行第j歹U,在按行優(yōu)先順序

存儲(chǔ)時(shí),應(yīng)先存儲(chǔ)前i?l行的非零元素和同一行的前j?l個(gè)元素。如

果all的存儲(chǔ)地址為LOC(all),則aij的存儲(chǔ)地址為D。

答案:D

25.下列關(guān)于二叉樹周游的敘述中,哪一項(xiàng)是正確的。

(2006.09)

A)若一個(gè)結(jié)點(diǎn)是某二叉樹對稱序的最后一個(gè)結(jié)點(diǎn),則它必是該

二叉樹前序的最后一個(gè)結(jié)點(diǎn)

B)若一個(gè)結(jié)點(diǎn)是某二叉樹前序的最后一個(gè)結(jié)點(diǎn),則它必是該二

叉樹對稱序的最后一個(gè)結(jié)點(diǎn)

C)若一個(gè)樹葉是某二叉樹對稱序的最后一個(gè)結(jié)點(diǎn),則它必是該

二叉樹前序的最后一個(gè)結(jié)點(diǎn)

D)若一個(gè)樹葉是某二叉樹前序的最后一個(gè)結(jié)點(diǎn),則它必是該二

叉樹對稱序的最后一個(gè)結(jié)點(diǎn)

解析:若一個(gè)樹葉是某二叉樹對稱序的最后一個(gè)節(jié)點(diǎn),則它必是

該二叉樹最右邊的樹葉,即前序的最后一個(gè)節(jié)點(diǎn)。而若將“樹葉”改

為“結(jié)點(diǎn)”則不正確,因?yàn)橛锌赡艹霈F(xiàn)二叉樹最右結(jié)點(diǎn)無右孩子的情

況。

答案:c

26.如下所示是一棵5階B樹,該B樹現(xiàn)在的層數(shù)為2。從該B

樹中刪除關(guān)鍵碼38后,該B樹的第2層的結(jié)點(diǎn)數(shù)為。(2006.09)

A)6B)7

-29-

C)8D)9

解析:刪除38后該節(jié)點(diǎn)剩下的關(guān)鍵碼的個(gè)數(shù)為1,小于「5/2

-I?1=2,所以刪除后要將該結(jié)點(diǎn)剩余的41與雙親結(jié)點(diǎn)中的45一起移

至原結(jié)點(diǎn)的右兄弟節(jié)點(diǎn),故結(jié)點(diǎn)數(shù)減1,變?yōu)?個(gè)。

答案:A

27.在待排序文件已基本有序的前提下,下列排序方法中效率最

高的是。(2006.09)

A)直接插入排序

C)快速排序B)直接選擇排序D)歸并排序

解析:直接插入排序,若文件基本有序,則比較次數(shù)最小為n?l

次,移動(dòng)次數(shù)為0;直接選擇排序,無論待排序文件是否基本有序,

其比較次數(shù)均為n(n?l)/2,若文件基本有序,則移動(dòng)次數(shù)減少,最小

為0;快速排序在文件基本有序時(shí)蛻化為起泡排序,時(shí)間復(fù)雜度為

n(n?l)/2;對于歸并排序,無論待排序文件是否基本有序,其比較次

數(shù)均為nlog2n,若文件基本有序,則移動(dòng)次數(shù)減少,最小為0,可見

直接插入排序效率最高。2

答案:A

28.下列關(guān)于數(shù)據(jù)結(jié)構(gòu)基本概念的敘述中,哪一條是正確的

(2006.04)

A)數(shù)據(jù)的邏輯結(jié)構(gòu)分為表結(jié)構(gòu)和樹結(jié)構(gòu)

B)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)

C)數(shù)據(jù)元素是數(shù)據(jù)的基本單位

D)節(jié)點(diǎn)是有獨(dú)立含義的數(shù)據(jù)最小單位

解析:數(shù)據(jù)的基本單位是數(shù)據(jù)元素,故C正確。數(shù)據(jù)的邏輯結(jié)構(gòu)

可以劃分為集合、線性結(jié)構(gòu)、樹型結(jié)構(gòu)和圖狀結(jié)構(gòu)(網(wǎng)狀結(jié)構(gòu))。數(shù)

據(jù)的存儲(chǔ)結(jié)構(gòu)指的是數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中的表示(映像),它包括順

序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)兩種結(jié)構(gòu)。節(jié)點(diǎn)是由若干位組合起來形成的位串,

數(shù)據(jù)的最小單位是節(jié)點(diǎn)中的一個(gè)二進(jìn)制數(shù)位(bit)。

答案:C

29.下列關(guān)于串的敘述中,哪一條是正確的。(2006.04)

A)串是由零個(gè)或多個(gè)字符組成的有限序列

B)空串是由空格構(gòu)成的串

C)串只能順序存儲(chǔ)

D)“推入”是串的基本運(yùn)算之一

解析:串是由零個(gè)或多個(gè)字符組成的有限序列;如果串中沒有任

何字符,則稱為空串。由一個(gè)或多個(gè)空格組成的串稱為空格串,空格

串不是空串,因?yàn)榭崭翊杏凶址?;串既可以順序存?chǔ)也可以鏈表存

儲(chǔ);串的基本操作一般是以“串的整體”作為操作對象,“推入”不

是串的基本運(yùn)算。

答案:A30.雙鏈表的每個(gè)結(jié)點(diǎn)包括兩個(gè)指針域。其中rlink指向

結(jié)點(diǎn)的后繼,llink指向結(jié)點(diǎn)的前驅(qū)。如果要在p所指結(jié)點(diǎn)前面插入q

所指的新結(jié)點(diǎn),下列哪一個(gè)操作序列是正確的。(2006.04)

A)pf.rlinkf.llink:=q;pf.rlink:=q;qf.llink:=p;qt.rlink:=p

t.rlink;

B)p\.llinkt.rlink:=q;pt.llink:=q;qt.rlink:=p;qt.llink:=p\.llink;

C)qt.llink:=p;qt.rlink:=pt.rlink;pt.rlinkf.llink:=q;p

t.rlink:=q;

D)qt.rlink:=p;q\.llink:=pf.llink;pt.llinkt.rlink:=q;p\.llink:=q;

解析:首先要修改p所指節(jié)點(diǎn)的llink字段和原前驅(qū)節(jié)點(diǎn)的rlink

字段,然后置q所指節(jié)點(diǎn)的rlink和llink值,即qt.Hink:=p;qt.llink:=p

;;

t.llinkpt.llinkf.rlink:=qpt.llink:=q0

答案:D

31.下列哪一個(gè)不是隊(duì)列的基本運(yùn)算。(2006.04)

-30-

A)從隊(duì)尾插入一個(gè)新元素

B)從隊(duì)列中刪除第i個(gè)元素

C)判斷一個(gè)隊(duì)列是否為空

D)讀取隊(duì)頭元素的值

解析:隊(duì)列的基本操作有:構(gòu)造一個(gè)空隊(duì)列;將隊(duì)列清為空隊(duì)列;

判斷隊(duì)列是否為空隊(duì)列;計(jì)算隊(duì)列的長度;讀取隊(duì)列的隊(duì)頭元素;向

隊(duì)列插入一個(gè)元素為該隊(duì)列的隊(duì)尾元素;刪除隊(duì)列隊(duì)頭元素。隊(duì)列只

允許在隊(duì)尾插入元素,而在隊(duì)頭刪除元素。

答案:B

32.棧結(jié)構(gòu)不適用于下列哪一種應(yīng)用。(2006.04)

A)表達(dá)式求值

B)樹的層次次序周游算法的實(shí)現(xiàn)

C)二叉樹對稱序周游算法的實(shí)現(xiàn)

D)快速排序算法的實(shí)現(xiàn)

解析:見第4題。

答案:B

33.按層次次序?qū)⒁豢糜衝個(gè)結(jié)點(diǎn)的完全二叉樹的所有結(jié)點(diǎn)從1

到n編號,當(dāng)i?n/2時(shí),編號為i的結(jié)點(diǎn)的左孩子的編號是。(2006.04)

A)2i?l

C)2i+lB)2iD)不確定

解析:若對有n個(gè)節(jié)點(diǎn)的完全二叉樹按層次從上到下,每個(gè)層次

從左至右的規(guī)則為節(jié)點(diǎn)編號,若i?n/2,則編號為i的節(jié)點(diǎn)的左孩子節(jié)

點(diǎn)的編號為2i;若i?n/2,則編號為i的節(jié)點(diǎn)沒有左孩子節(jié)點(diǎn)。

答案:B

34.對于給出的一組權(quán)w={10,12,16,21,30},通過霍夫曼

算法求出的擴(kuò)充二叉樹的帶權(quán)外部路徑長度為。(2006.04)

A)89

C)200B)189D)300

解析:霍夫曼算法建立的擴(kuò)充二叉樹如下圖所示。所以帶權(quán)外部

路徑長度為(21+16)X2+30X2+(12+10)義3=200

答案:C

35.設(shè)散列表的地址空間為0到10,散列函數(shù)為h(k)=kmodll,

用線性探查法解決碰撞?,F(xiàn)從空的散列表開始,依次插入關(guān)鍵碼值

95,14,27,68,82,則最后一個(gè)關(guān)鍵碼82的地址為。(2006.04)

A)4

C)6B)5D)7

解析:本題采用除留余數(shù)法構(gòu)造散列函數(shù),將關(guān)鍵碼值95,14,

27,68,82分別帶入h(k)=kmodll,得到散列地址分別為7,3,5,

2,5,當(dāng)存儲(chǔ)關(guān)鍵碼82時(shí),由于其散列地址與前面的一個(gè)關(guān)鍵碼發(fā)

生沖突,因此其存儲(chǔ)

-31-

地址向后移1位到6o

答案:C

36.設(shè)有字符序列(Q,H,C,Y,P,A,M,S,R,D,F,X),

則新序列(F,H,C,D,P,A,M,Q,R,S,Y,X)是下列哪一個(gè)排

序算法一趟掃描的結(jié)果。(2006.04)

A)起泡排序

B)初始步長為4的希爾(shell)排序

C)二路歸并排序

D)以第一個(gè)元素為分界元素的快速排序

解析:若進(jìn)行升序起泡排序,則因?yàn)镼大于H,因此Q和H要

交換,新序列第一個(gè)字符應(yīng)該為H;若進(jìn)行降序起泡排序,Q和H位

置不變;若進(jìn)行希爾排序,始步長為4,則Q應(yīng)該與P分為一組,新

序列的第一個(gè)字符應(yīng)該為P(升序)或Q(降序)。若進(jìn)行二路歸并

排序,則Q和H歸并,排序后的結(jié)果應(yīng)該為H,Q(升序)或者Q,

H(降序)??焖倥判蛞缘谝粋€(gè)元素Q為分界元素處理原序列可得到

新序列。

答案:D

37.以下關(guān)于數(shù)據(jù)的邏輯結(jié)構(gòu)的敘述中,哪一條是不正確的。

(2005.09)

A)數(shù)據(jù)的邏輯結(jié)構(gòu)是數(shù)據(jù)間關(guān)系的描述

B)數(shù)據(jù)的邏輯結(jié)構(gòu)不僅反映數(shù)據(jù)間的邏輯關(guān)系,而且反映其在

計(jì)算機(jī)中的存儲(chǔ)方式

C)數(shù)據(jù)的邏輯結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)

D)樹形結(jié)構(gòu)是典型的非線性結(jié)構(gòu)解析:如第2題。

答案:B

38.在包含1000個(gè)元素的線性表中實(shí)現(xiàn)如下各運(yùn)算,哪一個(gè)所

需的執(zhí)行時(shí)間最短。(2005.09)

A)線性表按順序方式存儲(chǔ),查找關(guān)鍵碼值為666的結(jié)點(diǎn)

B)線性表按鏈接方式存儲(chǔ),查找關(guān)鍵碼值為666的結(jié)點(diǎn)

C)線性表按順序方式存儲(chǔ),查找線性表中第900個(gè)結(jié)點(diǎn)

D)線性表按鏈接方式存儲(chǔ),查找線性表中第900個(gè)結(jié)點(diǎn)

解析:線性表順序方式存儲(chǔ),可直接計(jì)算確定第i個(gè)節(jié)點(diǎn)的存儲(chǔ)

地址,其執(zhí)行時(shí)間與i的值沒有關(guān)系。查找鏈接存儲(chǔ)方式的線性表中

的第i個(gè)節(jié)點(diǎn),依次與前i?l個(gè)節(jié)點(diǎn)進(jìn)行比較,最終確認(rèn)結(jié)點(diǎn)的位置。

答案:c

39.在包含1000個(gè)元素的線性表中實(shí)現(xiàn)如下各運(yùn)算,哪一個(gè)所

需的執(zhí)行時(shí)間最長。(2005.09)

A)線性表按順序方式存儲(chǔ),在線性表的第100個(gè)結(jié)點(diǎn)后面插入

一個(gè)新結(jié)點(diǎn)

B)線性表按鏈接方式存儲(chǔ),在線性表的第100個(gè)結(jié)點(diǎn)后面插入

一個(gè)新結(jié)點(diǎn)

C)線性表按順序方式存儲(chǔ),刪除線性表的第900個(gè)結(jié)點(diǎn)

D)線性表按鏈接方式存儲(chǔ),刪除指針P所指向的結(jié)點(diǎn)

解析:A中需要把第1000個(gè)元素到第101個(gè)元素依次后移一位,

共需移動(dòng)900個(gè)元素;B中只需從第一個(gè)節(jié)點(diǎn)開始,順序查找到第100

個(gè)節(jié)點(diǎn),再進(jìn)行兩次交換指針即可;C中在順序表中刪除一個(gè)元素,

需把刪除元素的后面元素前移,共前移100個(gè)元素;D中在鏈接表中

刪除節(jié)點(diǎn),只需進(jìn)行一次指針的修改即可。

答案:A

40.以下關(guān)于廣義表的敘述中,哪一條是正確的。(2005.09)

A)廣義表是。個(gè)或多個(gè)單元素或子表組成的有限序列

B)廣義表至少有一個(gè)元素是子表

C)廣義表不可以是自身的子表

D)廣義表不能為空表

-32-

解析:廣義表是線性表的擴(kuò)展,它的定義是由n個(gè)數(shù)據(jù)元素組成

的有限序列,其中的數(shù)據(jù)元素既可以是單元素,也可以是子表;廣義

表既可以是自身的子表,也可是空表。

答案:A

41-43題基于下圖所示的二叉樹:

41.該二叉樹對應(yīng)的樹林包括幾棵樹。(2005.09)

A)1

C)3B)2D)4

解析:二叉樹轉(zhuǎn)換為樹林,二叉樹的根就是樹林第一棵樹的根;

二叉樹的左子樹轉(zhuǎn)換為樹林的第一棵樹,二叉樹的右子樹對應(yīng)于樹林

中其余的樹;二叉樹右子樹的根節(jié)點(diǎn)作為余下樹中第一棵樹的根節(jié)點(diǎn),

其余以此類推。本題中的二叉樹應(yīng)該包含4棵樹。

答案:D

42.如果用llink?rlink法存儲(chǔ)該二叉樹,則各結(jié)點(diǎn)的指針域中共

包含多少個(gè)空指針。(2005.09)

A)6

C)10B)8D)12

解析:二叉樹采用llink?rlink法存儲(chǔ)時(shí),其指針域Mink和rlink分

別指向節(jié)點(diǎn)的左孩子和右孩子。題中二叉樹D、G、H、I四個(gè)節(jié)點(diǎn)的

左右孩子和E節(jié)點(diǎn)的右孩子以及C節(jié)點(diǎn)的左孩子均為空,因此空指針

共有4X2+2X1=10個(gè)。

答案:C

43.如果將該二叉樹存儲(chǔ)為對稱序線索二叉樹,則結(jié)點(diǎn)H的左線

索指向哪一個(gè)結(jié)點(diǎn)(2005.09)

A)結(jié)點(diǎn)A

C)結(jié)點(diǎn)EB)結(jié)點(diǎn)CD)結(jié)點(diǎn)G

解析:采用對稱序線索二叉樹存儲(chǔ)二叉樹時(shí),其訪問次序是先中

序遍歷左子樹,然后訪問根節(jié)點(diǎn),最后遍歷右子樹。題中二叉樹存儲(chǔ)

為對稱序線索二叉樹的結(jié)果是:DBGEACHFI,所以節(jié)點(diǎn)H的左線索指

向節(jié)點(diǎn)C。

答案:B

44.以下關(guān)于B樹運(yùn)算的敘述中,哪一條是正確的o(2005.09)

A)若插入過程中根結(jié)點(diǎn)發(fā)生分裂,則B樹的高度加1

B)每當(dāng)進(jìn)行插入運(yùn)算,就在B樹的最下面一層增加一個(gè)新結(jié)點(diǎn)

C)若要?jiǎng)h除的關(guān)鍵碼出現(xiàn)在根結(jié)點(diǎn)中,則不能真正刪除,只能

做標(biāo)記

D)刪除可能引起B(yǎng)樹結(jié)點(diǎn)個(gè)數(shù)減少,但不會(huì)造成B樹高度減小

解析:對于根節(jié)點(diǎn),由于沒有雙親節(jié)點(diǎn),所以如果根節(jié)點(diǎn)發(fā)生了

分裂,就要建立一個(gè)新的根節(jié)點(diǎn),則B樹的高度加1。

答案:A

45.對n個(gè)記錄的文件進(jìn)行歸并排序,所需要的輔助存儲(chǔ)空間

為。(2005.09)

A)0(1)B)0(n)

-33-

C)O(log2n)

間復(fù)雜度為0(n)。

答案:BD)0(n2)解析:歸并排序需把每次歸并的結(jié)果放

入另一個(gè)空間中,n個(gè)記錄的文件就需再分配n個(gè)大小的空間,所以

二、填空題

1.按行優(yōu)先順序存儲(chǔ)下三角矩陣Ann的非零元素,則計(jì)算非零

元素aij(lWjWWn)的地址的公式為Loc(aij)=,+i*(i?l)/2+(j?l)0

(2007.09)

解析:非零元素aij在矩陣中處在第i行第j歹U,在按行優(yōu)先順序

存儲(chǔ)時(shí),應(yīng)先存儲(chǔ)前i?l行的非零元素(共iX(i?l)/2個(gè))和同一行的前

j?l個(gè)元素。如果all的存儲(chǔ)地址為LOC(all),則aij的存儲(chǔ)地址為

LOC(aij)?LOC(all)?i?(i?l)/2?(j?l)o

答案:Loc(all)

2.按對稱序周游二叉樹等同于按。(2007.09)

解析:按對稱序周游二叉樹相當(dāng)于中序遍歷二叉樹。

答案:中序

3.m階B+樹的根節(jié)點(diǎn)至多有個(gè)孩子。(2007.09)

解析:按照B+樹的定義,m階B+樹每個(gè)結(jié)點(diǎn)至多有m個(gè)孩子。

答案:m

4.三元組法和十字鏈表法都可以用于矩陣的存儲(chǔ)表示。

(2007.04)

解析:三元組法和十字鏈表法均用于存儲(chǔ)稀疏矩陣。用三元組存

儲(chǔ)稀疏矩陣僅存儲(chǔ)矩陣中的非零元素,十字鏈表法則為了避免進(jìn)行刪

除和插入操作時(shí)而導(dǎo)致的大量節(jié)點(diǎn)的移動(dòng)。

答案:稀疏

5.有關(guān)鍵碼值為10,20,30的三個(gè)結(jié)點(diǎn),按所有可能的插入順

序去構(gòu)造二叉排序樹,能構(gòu)造出棵不同的二叉排序樹。(2007.04)

解析:二叉排序樹具有以下性質(zhì):若其左子樹非空,則所有左子

樹上數(shù)據(jù)元素關(guān)鍵字的值均小于根節(jié)點(diǎn)關(guān)鍵字的值;若其右子樹非空,

則所有右子樹上數(shù)據(jù)元素關(guān)鍵字的值均大于根節(jié)點(diǎn)關(guān)鍵字的值;其左

子樹和右子樹也是二叉排序樹,因此能夠構(gòu)造出5棵二叉排序樹。

答案:5

6.散列法存儲(chǔ)的基本思想是:由結(jié)點(diǎn)的決定結(jié)點(diǎn)的存儲(chǔ)地址。

(2006.09)

解析:散列法存儲(chǔ)的基本思想是:由節(jié)點(diǎn)的關(guān)鍵碼值決定節(jié)點(diǎn)的

存儲(chǔ)地址,具體地址由散列函數(shù)決定。答案:關(guān)鍵碼值

7.若一課二叉樹的度為2的結(jié)點(diǎn)數(shù)為9,則該二叉樹的葉結(jié)點(diǎn)

數(shù)為。(2006.09)

解析:二叉樹的葉節(jié)點(diǎn)數(shù)為n0=n2+l,因此葉節(jié)點(diǎn)數(shù)9+1=10。

答案:10

8.在順序表(3,6,8,10,12,15,16,18,21,25,30)中,

用二分法查找關(guān)鍵碼值11,所需的關(guān)鍵碼比較次數(shù)為o(2006.09)

解析:二分查找法的基本思路是不斷把區(qū)間的中間元素與待查找

的元素比較,根據(jù)比較結(jié)果確定是結(jié)束查找還是在左邊或右邊子表并

按相同的方法繼續(xù)查找。與11比較的關(guān)鍵碼分別為15、8、10、12,

所以比較的次數(shù)為4。

答案:4

-34-

9.廣義表是線性表的推廣,是由零個(gè)或多個(gè)單元素或所組成

的有限序列。(2006.04)

解析:廣義表是線性表的擴(kuò)展,它的定義是由n個(gè)數(shù)據(jù)元素組成

的有限序列,其中的數(shù)據(jù)元素

溫馨提示

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

評論

0/150

提交評論