![數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案_第1頁](http://file4.renrendoc.com/view/71a5ae16f354e4cfed4516d8081ee61c/71a5ae16f354e4cfed4516d8081ee61c1.gif)
![數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案_第2頁](http://file4.renrendoc.com/view/71a5ae16f354e4cfed4516d8081ee61c/71a5ae16f354e4cfed4516d8081ee61c2.gif)
![數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案_第3頁](http://file4.renrendoc.com/view/71a5ae16f354e4cfed4516d8081ee61c/71a5ae16f354e4cfed4516d8081ee61c3.gif)
![數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案_第4頁](http://file4.renrendoc.com/view/71a5ae16f354e4cfed4516d8081ee61c/71a5ae16f354e4cfed4516d8081ee61c4.gif)
![數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案_第5頁](http://file4.renrendoc.com/view/71a5ae16f354e4cfed4516d8081ee61c/71a5ae16f354e4cfed4516d8081ee61c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
千里之行,始于足下讓知識(shí)帶有溫度。第第2頁/共2頁精品文檔推薦數(shù)據(jù)結(jié)構(gòu)習(xí)題參考答案第1章概論
1.數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型的含義分離是什么?
數(shù)據(jù):對(duì)客觀事物的符號(hào)表示,在計(jì)算機(jī)科學(xué)中是指全部能輸入到計(jì)算機(jī)中并由計(jì)算機(jī)程序處理的符號(hào)的總稱。
數(shù)據(jù)元素:數(shù)據(jù)的基本單位,在計(jì)算機(jī)程序中通常作為一個(gè)整體考慮。
數(shù)據(jù)結(jié)構(gòu):數(shù)據(jù)元素之間的關(guān)系+運(yùn)算,是以數(shù)據(jù)為成員的結(jié)構(gòu),是帶結(jié)構(gòu)的數(shù)據(jù)元素的集合,數(shù)據(jù)元素之間存在著一種或多種特定的關(guān)系。
數(shù)據(jù)類型:數(shù)據(jù)類型是用來區(qū)別不同的數(shù)據(jù);因?yàn)閿?shù)據(jù)在存儲(chǔ)時(shí)所需要的容量各不相同,不同的數(shù)據(jù)就必需要分配不同大小的內(nèi)存空間來存儲(chǔ),全部就要將數(shù)據(jù)劃分成不同的數(shù)據(jù)類型。數(shù)據(jù)類型包含取值范圍和基本運(yùn)算等概念。
2.什么是數(shù)據(jù)的規(guī)律結(jié)構(gòu)?什么是數(shù)據(jù)的物理結(jié)構(gòu)?數(shù)據(jù)的規(guī)律結(jié)構(gòu)與物理結(jié)構(gòu)的區(qū)分和聯(lián)系是什么?
規(guī)律結(jié)構(gòu):數(shù)據(jù)的規(guī)律結(jié)構(gòu)定義了數(shù)據(jù)結(jié)構(gòu)中數(shù)據(jù)元素之間的互相規(guī)律關(guān)系。數(shù)據(jù)的規(guī)律結(jié)構(gòu)包含下面兩個(gè)方面的信息:
①數(shù)據(jù)元素的信息;
②各數(shù)據(jù)元素之間的關(guān)系。
物理結(jié)構(gòu):也叫儲(chǔ)存結(jié)構(gòu),是指規(guī)律結(jié)構(gòu)的存儲(chǔ)表示,即數(shù)據(jù)的規(guī)律結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的存放形式,包括結(jié)點(diǎn)的數(shù)據(jù)和結(jié)點(diǎn)間關(guān)系的存儲(chǔ)表示。
數(shù)據(jù)的規(guī)律結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)是密不行分的,一個(gè)操作算法的設(shè)計(jì)取決于所選定的規(guī)律結(jié)構(gòu),而算法的實(shí)現(xiàn)依靠于所采與的存儲(chǔ)結(jié)構(gòu)。采納不同的存儲(chǔ)結(jié)構(gòu),其數(shù)據(jù)處理的效率是不同的。因此,在舉行數(shù)據(jù)處理時(shí),針對(duì)不同問題,挑選合理的規(guī)律結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)十分重要。
3.數(shù)據(jù)結(jié)構(gòu)的主要操作包括哪些?
對(duì)于各種數(shù)據(jù)結(jié)構(gòu)而言,他們?cè)诨静僮魃鲜窍嘞竦?,最常用的操作有?/p>
●創(chuàng)建:建立一個(gè)數(shù)據(jù)結(jié)構(gòu);
●清除:清除一個(gè)數(shù)據(jù)結(jié)構(gòu);
●插入:在數(shù)據(jù)結(jié)構(gòu)中增強(qiáng)新的結(jié)點(diǎn);
●刪除:把指定的結(jié)點(diǎn)從數(shù)據(jù)結(jié)構(gòu)中刪除;
●拜訪:對(duì)數(shù)據(jù)結(jié)構(gòu)中的結(jié)點(diǎn)舉行拜訪;
●更新:轉(zhuǎn)變指定結(jié)點(diǎn)的值或轉(zhuǎn)變指定的某些結(jié)點(diǎn)之間的關(guān)系;
●查找:在數(shù)據(jù)結(jié)構(gòu)中查找滿足一定條件的結(jié)點(diǎn);
●排序:對(duì)數(shù)據(jù)結(jié)構(gòu)中各個(gè)結(jié)點(diǎn)按指定數(shù)據(jù)項(xiàng)的值,以升序或降序重新羅列。
4.什么是抽象數(shù)據(jù)類型?如何定義抽象數(shù)據(jù)類型?
抽象數(shù)據(jù)類型(AbstractDataType簡(jiǎn)稱ADT)是指一個(gè)數(shù)學(xué)模型以及定義在此數(shù)學(xué)模型上的一組操作。ADT是與詳細(xì)的物理存儲(chǔ)無關(guān)的數(shù)據(jù)類型,因此,不論ADT的內(nèi)部結(jié)構(gòu)如何變化,只要其數(shù)據(jù)結(jié)構(gòu)的特性不變,都不影響其外部使用。
對(duì)抽象數(shù)據(jù)類型的描述普通用(D,R,P)三元組表示,抽象數(shù)據(jù)類型的定義格式為:
ADT
{
數(shù)據(jù)對(duì)象D:
數(shù)據(jù)關(guān)系R:
基本操作P:
}ADT
其中,D是數(shù)據(jù)對(duì)象,R是D上的關(guān)系集,P是對(duì)D的基本操作集。
數(shù)據(jù)對(duì)象和數(shù)據(jù)關(guān)系的定義用偽代碼來描述?;静僮鞯亩x格式為:
基本操作名(參數(shù)表)
初始條件:
操作結(jié)果:
初始條件說明操作執(zhí)行之前數(shù)據(jù)結(jié)構(gòu)和參數(shù)應(yīng)滿足的條件;操作結(jié)果說明操作完成后,數(shù)據(jù)結(jié)構(gòu)的變化情況和應(yīng)返回的結(jié)果。
5.什么是算法?算法的基本特征是什么?
算法:是在有限的步驟內(nèi)解決數(shù)知識(shí)題的過程,是以一步接一步的方式來具體描述計(jì)算機(jī)如何將輸入轉(zhuǎn)化為所要求的輸出的過程,即算法是對(duì)計(jì)算機(jī)上執(zhí)行的計(jì)算過程的詳細(xì)描述。一個(gè)有效的算法必需滿足的五個(gè)重要特性:
①有窮性:算法必需能在有限的時(shí)光內(nèi)做完,即在任何狀況下,算法必需能在執(zhí)行有限個(gè)步驟之后終止,都不能陷入無窮循環(huán)中。
②確定性:算法中的每一個(gè)步驟,必需經(jīng)過明確的定義,并且能夠被計(jì)算機(jī)所理解和執(zhí)行,而不能是抽象和含糊的概念,更不允許有二義性。
③輸入:算法有0個(gè)或多個(gè)輸入值,來描述算法開頭前運(yùn)算對(duì)象的初始狀況,這是算法執(zhí)行的起點(diǎn)或是依據(jù)。0個(gè)輸入是指算法本身給出了運(yùn)算對(duì)象的初始條件。
④輸出:算法至少有1個(gè)或多個(gè)輸出值,反映對(duì)運(yùn)算對(duì)象的處理結(jié)果,沒有輸出的算法沒有任何意義。
⑤可行性:算法中要做的運(yùn)算都是基本運(yùn)算,能夠被精確地舉行。即算法中執(zhí)行的任何計(jì)算都可以被分解為基本的運(yùn)算步,每個(gè)基本的運(yùn)算步都可以在有限的時(shí)光內(nèi)完成。
6.什么是算法分析?算法分析主要考慮哪幾方面的內(nèi)容?
算法的討論與實(shí)際問題直接相關(guān),用來解一個(gè)問題可以有無數(shù)不同的算法,他們之間的效果可能會(huì)有很大差異。算法設(shè)計(jì)者最關(guān)懷的就是什么是有效的算法,如何評(píng)價(jià)一個(gè)算法的優(yōu)劣,如何從多種算法中挑選好的算法。除了要首先考慮算法的正確性外,還要分析和評(píng)價(jià)算法的性能。分析和評(píng)價(jià)算法的性能主要要考慮以下兩個(gè)方面:
①時(shí)光代價(jià):執(zhí)行算法所耗費(fèi)的時(shí)光。一個(gè)好的算法首先應(yīng)當(dāng)比其他算法的運(yùn)行時(shí)光代價(jià)要小。算法的時(shí)光代價(jià)的大小用算法的時(shí)光復(fù)雜度來度量。
②空間代價(jià):執(zhí)行算法所耗費(fèi)的存儲(chǔ)空間,主要是輔助空間。算法運(yùn)行所需的空間消耗是衡量算法優(yōu)劣的另一個(gè)重要因素。算法的空間代價(jià)的大小用算法的空間復(fù)雜度來度量。
7.分析下面算法的時(shí)光復(fù)雜度。
(1)答:時(shí)光復(fù)雜度為n2
(2)時(shí)光復(fù)雜度:n
(3)時(shí)光復(fù)雜度:n
(4)時(shí)光復(fù)雜度:n2
(5)時(shí)光復(fù)雜度:O(log2n)
8.算法設(shè)計(jì)中的遞歸、窮舉、遞推和迭代等算法的基本思想是什么?
遞推法:是利用問題本身所具有的一種遞推關(guān)系求解問題的一種辦法。它把問題求解分成若干步,找出相鄰幾步的關(guān)系,從而達(dá)到求解問題的目的。具有如下性質(zhì)的問題可以采納遞推法:當(dāng)?shù)玫絾栴}規(guī)模為i-1的解后,由問題的遞推性質(zhì),能構(gòu)造出問題規(guī)模為i的解。因此,程序可以從i=0或i=1動(dòng)身,由已知i-1規(guī)模的解,通過遞推,獲得問題規(guī)模為i的解,直至得到問題規(guī)模為n的解。
遞歸法:遞歸策略是利用函數(shù)直接或間接地調(diào)用自身來完成某個(gè)計(jì)算過程。能采納遞歸描述的算法通常有這樣的特征:為求解規(guī)模為n的問題,設(shè)法將它分解成規(guī)模較小的問題,然后從這些小問題的解便利地構(gòu)造出更大問題的解,并且這些規(guī)模較小的問題也能采納同樣的分解和綜合辦法,分解成規(guī)模更小的問題,并從這些更小問題的解構(gòu)造出較大規(guī)模問題的解。
窮舉法:窮舉搜尋法也稱窮舉法或搜尋法是對(duì)可能是解的眾多候選解按某種挨次舉行逐一枚舉和檢驗(yàn),并從中找出那些符合要求的候選解作為問題的解。
迭代法:數(shù)值分析中通過從一個(gè)初始估量動(dòng)身尋覓一系列近似解來解決問題(普通是解方程或者方程組)的過程,為實(shí)現(xiàn)這一過程所使用的辦法統(tǒng)稱為迭代法。
9.算法設(shè)計(jì)中的分治策略、貪心策略、動(dòng)態(tài)規(guī)劃策略、回溯策略以及分支定界策略的基本思想是什么?
分治策略的基本思想是把一個(gè)規(guī)模為n的問題劃分為若干個(gè)規(guī)模較小、且與原問題相像的子問題,然后分離求解這些子問題,最后把各子結(jié)果合并得到囫圇問題的解。分解的子問題通常與原問題相像,所以可以遞歸地使用分治策略來求解。
貪心策略的基本思想是把一個(gè)整體最優(yōu)問題分解為一系列的最優(yōu)挑選問題,決策一旦做出,就不能再更改。它是通過若干次的貪心挑選而得出最優(yōu)解(或較優(yōu)解)的一種解題策略。
動(dòng)態(tài)規(guī)劃策略與貪心策略類似,將一個(gè)問題劃分為重復(fù)的子問題,通過對(duì)相同子問題的求解來解決較大問題,即將一個(gè)問題的解決計(jì)劃視為一系列決策的結(jié)果。不同的是,在貪心策略中,每采納一次貪心準(zhǔn)則便做出一個(gè)不行撤回的決策,可能得不到問題的最優(yōu)解。而在動(dòng)態(tài)規(guī)劃中,處理要根據(jù)某種規(guī)章舉行挑選,還要考察每個(gè)最優(yōu)決策序列中是否包含一個(gè)最優(yōu)子序列,目的是得到問題的最優(yōu)解。
回溯策略也叫摸索法,它的基本思想是:在一些問題求解進(jìn)程中,先挑選某一種可能狀況向前探究,當(dāng)發(fā)覺所選用的摸索性操作不是最佳挑選,需退回一步,重新挑選繼續(xù)舉行摸索,直到找到問題的解或者證實(shí)問題無解。
分支定界策略也常常被稱為分支限界策略,它的基本思想是:首先確定目標(biāo)值的上下界,然后一邊搜尋一邊剪掉空間樹的某些不行能產(chǎn)生最優(yōu)解的分支,提高搜尋效率。
其次章線性表
1.具有什么特征的數(shù)據(jù)結(jié)構(gòu)被稱為線性表?
線性表是一種最常用、最容易的典型線性數(shù)據(jù)結(jié)構(gòu),應(yīng)用十分廣泛。線性表是由n(n0)個(gè)數(shù)據(jù)元素組成的一個(gè)有限序列,線性表中數(shù)據(jù)元素的個(gè)數(shù)n稱為線性表的長(zhǎng)度。當(dāng)n=0時(shí),稱為空表。
對(duì)于非空線性表,數(shù)據(jù)元素之間存在一對(duì)一的關(guān)系,詳細(xì)特性如下:
第一個(gè)數(shù)據(jù)元素沒有前驅(qū);
最后一個(gè)數(shù)據(jù)元素沒有后繼外;
其他數(shù)據(jù)元素都是首尾相接、有且惟獨(dú)一個(gè)前驅(qū)和后繼。
2.如何實(shí)現(xiàn)線性表的挨次存儲(chǔ)結(jié)構(gòu)?
把線性表的結(jié)點(diǎn)按規(guī)律挨次依次存放在一組地址延續(xù)的存儲(chǔ)單元里就構(gòu)成了線性表的挨次存儲(chǔ),采納挨次存儲(chǔ)結(jié)構(gòu)的線性表簡(jiǎn)稱挨次表。線性表的挨次存儲(chǔ)結(jié)構(gòu)有如下特點(diǎn):
●線性表中全部元素所占的存儲(chǔ)空間是延續(xù)的;
●線性表的規(guī)律挨次與物理挨次全都;
●數(shù)組中的每一個(gè)元素的位置可以用公式來確定。假設(shè)線性表中的第一個(gè)數(shù)據(jù)元素的
存儲(chǔ)地址(指第一個(gè)字節(jié)的地址,即首地址)為L(zhǎng)OC(e1),每一個(gè)數(shù)據(jù)元素占k個(gè)
字節(jié),則線性表中第i個(gè)元素ei在計(jì)算機(jī)存儲(chǔ)空間中的存儲(chǔ)地址為:
LOC(ei)=LOC(e1)+(i-1)k
3.如何實(shí)現(xiàn)線性表的4種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)?
數(shù)據(jù)結(jié)構(gòu)中的每一個(gè)數(shù)據(jù)元素對(duì)應(yīng)于一個(gè)存儲(chǔ)單元,這種存儲(chǔ)單元稱為存儲(chǔ)結(jié)點(diǎn),簡(jiǎn)稱結(jié)點(diǎn)。每個(gè)結(jié)點(diǎn)分為兩部分:一部分用于存放數(shù)據(jù)元素的值,稱為數(shù)據(jù)域;另一部分是指針,用于指向與該結(jié)點(diǎn)在規(guī)律上相連的其他結(jié)點(diǎn),稱為指針域。對(duì)于線性表,指針域用于指向該結(jié)點(diǎn)的前一個(gè)或后一個(gè)結(jié)點(diǎn)(即前驅(qū)結(jié)點(diǎn)或后繼結(jié)點(diǎn))。通過結(jié)點(diǎn)的指針域?qū)個(gè)結(jié)點(diǎn)按其規(guī)律結(jié)構(gòu)銜接在一起的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),稱為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
單向鏈表:在線性鏈表中,用一個(gè)特地的指針指向線性表中第一個(gè)結(jié)點(diǎn),每一個(gè)結(jié)點(diǎn)的指針都指向它的下一個(gè)規(guī)律結(jié)點(diǎn),線性鏈表的最后一個(gè)結(jié)點(diǎn)的指針為空(用NULL或0表示),表示鏈表終止,這樣的線性鏈表稱為單向鏈表。下圖是單向鏈表暗示圖。
線性表的單向鏈?zhǔn)酱鎯?chǔ)
循環(huán)鏈表:將單向鏈表最后一個(gè)結(jié)點(diǎn)的指針指向頭結(jié)點(diǎn),這樣囫圇鏈表就構(gòu)成一個(gè)循環(huán),這種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為單向循環(huán)鏈表,簡(jiǎn)稱循環(huán)鏈表。頭結(jié)點(diǎn)的指針域指向線性表的第一個(gè)元素的結(jié)點(diǎn);循環(huán)鏈表中最后一個(gè)結(jié)點(diǎn)的指針域不再是NULL,而是指向頭結(jié)點(diǎn)。惟獨(dú)頭結(jié)點(diǎn)的循環(huán)鏈表稱為空循環(huán)鏈表。下圖是帶頭結(jié)點(diǎn)的非空循環(huán)鏈表和空循環(huán)鏈表暗示圖。
帶頭結(jié)點(diǎn)的循環(huán)鏈表
雙向鏈表:雙向鏈表的每個(gè)結(jié)點(diǎn)含有兩個(gè)指針域,一個(gè)指針指向其前驅(qū)結(jié)點(diǎn);另一個(gè)指針指向其后繼結(jié)點(diǎn)。雙向鏈表結(jié)點(diǎn)的結(jié)構(gòu)下圖(a)所示。
雙向循環(huán)鏈表:假如將雙向鏈表第一個(gè)結(jié)點(diǎn)的prev指針指向最后一個(gè)結(jié)點(diǎn),將最后一個(gè)結(jié)點(diǎn)的next指針與指向第一個(gè)結(jié)點(diǎn),就構(gòu)成了雙向循環(huán)鏈表。下圖(b)和(c)是雙向鏈表和雙向循環(huán)表的規(guī)律結(jié)構(gòu)暗示圖。
圖雙向鏈表結(jié)點(diǎn)結(jié)構(gòu)及雙向鏈表
4.挨次表和線性鏈表分離有哪些優(yōu)點(diǎn)和缺點(diǎn)?
線性表的挨次存儲(chǔ)與鏈?zhǔn)酱鎯?chǔ)比較
5.請(qǐng)列舉出一些線性表問題的實(shí)例。
①按員工號(hào)排序的員工基本狀況表;
②奧運(yùn)會(huì)各項(xiàng)競(jìng)賽日程;
③按學(xué)號(hào)記錄的同學(xué)的成果單;
等等。
6.對(duì)于挨次表和單向鏈表,如何實(shí)現(xiàn)統(tǒng)計(jì)重復(fù)元素個(gè)數(shù)的操作?
(c)雙向循環(huán)鏈表
(a)雙向鏈表結(jié)點(diǎn)結(jié)構(gòu)
在挨次表中實(shí)現(xiàn)統(tǒng)計(jì)重復(fù)元素個(gè)數(shù)的操作:
在教材的【描述2-1】中,增強(qiáng)一個(gè)統(tǒng)計(jì)重復(fù)元素個(gè)數(shù)的成員函數(shù):intCount(constT//返回x浮現(xiàn)的次數(shù)
在教材的【描述2-2】中,增強(qiáng)查找重復(fù)元素個(gè)數(shù)的成員函數(shù)的實(shí)現(xiàn)://實(shí)現(xiàn)統(tǒng)計(jì)重復(fù)元素個(gè)數(shù)
template
intLinearList::Count(constT
for(inti=0;i
intLinkList::Count(constT
intcount=0;
while(p!=NULL
p=p->next;
}
returncount;
}
第3章棧和隊(duì)列
1.具有什么特征的數(shù)據(jù)結(jié)構(gòu)被稱為棧和隊(duì)列?先進(jìn)后出、棧頂、棧底、先進(jìn)先出、隊(duì)頭、隊(duì)尾的概念是什么?
棧:一種插入和刪除都只能在表的同一端舉行的線性表。
隊(duì)列:一種只允許在表的一端舉行插入操作,而在表的另一端舉行刪除操作的線性表。
先進(jìn)后出:元素是以e1,e2,……en挨次進(jìn)入數(shù)據(jù)結(jié)構(gòu),以相反的挨次即en,en-1,……
e1離開數(shù)據(jù)結(jié)構(gòu)。
棧頂:允許舉行插入和刪除操作的一端。
棧底:棧中與棧頂相對(duì)的另一端。
先進(jìn)先出:元素是以e1,e2,……en挨次進(jìn)入數(shù)據(jù)結(jié)構(gòu),以相同的挨次即e1,e2,……
en。離開數(shù)據(jù)結(jié)構(gòu)。
隊(duì)頭:允許刪除操作的一端。
隊(duì)尾:允許插入操作的一端。
2.簡(jiǎn)述在挨次棧的棧頂插入一個(gè)元素的操作過程。
在插入元素之前,首先要推斷棧是否為滿,假如棧滿,返回“沾滿無法插入”等錯(cuò)誤提醒信息;否則讓top指針(指向當(dāng)前挨次棧的棧頂)向后移動(dòng)一個(gè)元素空間(元素大?。?,將要插入的元素放入top指針指向的內(nèi)存單元中。
3.一個(gè)棧的輸入序列為1、2、3,試給出所有可能的出棧序列。
可分為三種狀況:
①、當(dāng)惟獨(dú)一個(gè)存儲(chǔ)空間時(shí),惟獨(dú)一種出棧序列:1、2、3.
②、當(dāng)有兩個(gè)存儲(chǔ)空間時(shí),有:1、2、3,2、1、3,2、3、1等3種出棧序列
③、當(dāng)存儲(chǔ)空間大于等于三個(gè)時(shí),有:1、2、3,2、1、3,2、3、1,3、2、1
等4種出棧序列。
4.循環(huán)隊(duì)列的優(yōu)點(diǎn)是什么?在循環(huán)隊(duì)列中,僅依據(jù)頭尾指針相等,無法推斷隊(duì)列是“空”還是“滿”。要解決這個(gè)問題,常用的兩種辦法是什么?
循環(huán)隊(duì)列的優(yōu)點(diǎn)有兩點(diǎn):一是可以避開發(fā)生挨次隊(duì)列的“假上溢”現(xiàn)象;二是充分利用隊(duì)列的存儲(chǔ)空間。
兩種推斷隊(duì)列是“空”還是“滿”的辦法:一是商定少用一個(gè)元素空間;二是使用計(jì)數(shù)器size記錄當(dāng)前隊(duì)列的實(shí)際長(zhǎng)度。
5.簡(jiǎn)述在鏈接棧中插入一個(gè)元素的操作過程。
鏈接棧的插入操作,先將待進(jìn)棧結(jié)點(diǎn)的指針域指向本來的棧頂結(jié)點(diǎn),然后將棧頂指針top修改指向該結(jié)點(diǎn),使進(jìn)棧元素結(jié)點(diǎn)成為新的棧頂結(jié)點(diǎn)。
6.請(qǐng)列舉出一些可以用棧和隊(duì)列表示的實(shí)際問題。
全部“后進(jìn)先出”(LIFO,LastInFirstOut)的實(shí)際問題都可以用棧表示。棧的應(yīng)用主要有:數(shù)制的轉(zhuǎn)換、括號(hào)的匹配檢查、行編輯處理、表達(dá)式求解、走迷宮以及高級(jí)語言中函數(shù)的嵌套調(diào)用和遞歸的實(shí)現(xiàn)等。
全部“先進(jìn)先出”(FIFO,F(xiàn)irstInFirstOut)的實(shí)際問題都可以用隊(duì)列表示。如日常中的排隊(duì)問題,隊(duì)列的應(yīng)用主要有:操作系統(tǒng)中各種資源哀求排隊(duì)和各種緩沖區(qū)的先進(jìn)先出管理,各種應(yīng)用系統(tǒng)中的大事規(guī)劃和大事模擬,樹的層次遍歷和圖的廣度優(yōu)先遍歷等。
第4章數(shù)組、字符串與廣義表
1.具有什么特征的數(shù)據(jù)結(jié)構(gòu)被稱為數(shù)組?
數(shù)組可以看成是形如(index,value)的數(shù)據(jù)集合,其中,index是元素的索引,表示數(shù)據(jù)的規(guī)律位置,隨意兩個(gè)數(shù)據(jù)的index都不相同;value表示數(shù)據(jù)元素的值。
2.設(shè)有二維數(shù)組a[5][6],每個(gè)元素占相鄰的8個(gè)字節(jié),存儲(chǔ)器按字節(jié)編址,已知a的起始地址是1000,試計(jì)算:
(1)數(shù)組a的最后一個(gè)元素起始地址;
1000+(30-1)*8=1232。
(2)按行序優(yōu)先時(shí),元素a[3][5]的起始地址;
1000+(3*6+5)*8=1184
(3)按行列序優(yōu)先時(shí),元素a[4][3]的起始地址。
1000+(3*5+4)*8=1152
3.請(qǐng)簡(jiǎn)述數(shù)組和矩陣的關(guān)系。
矩陣是指縱橫羅列的二維數(shù)據(jù)表格。在高級(jí)語言編程中,通常用二維數(shù)組來描述一個(gè)矩陣,從而可以對(duì)矩陣中的元素舉行隨機(jī)存取。但矩陣的索引通常從1而不是像數(shù)組那樣從0開頭,并且使用A(i,j)而不是A[i,j]的形式來引用矩陣中的元素。
4.矩陣有哪些基本運(yùn)算?
矩陣的操作包括轉(zhuǎn)置、加法、減法和乘法等。
5.稀疏矩陣的特點(diǎn)是什么?為什么要對(duì)稀疏矩陣采納壓縮存儲(chǔ)技術(shù)?
稀疏矩陣的特點(diǎn)是矩陣中非零元素個(gè)數(shù)遠(yuǎn)遠(yuǎn)少于矩陣零元素個(gè)數(shù)。
采納壓縮存儲(chǔ)技術(shù)主要是為了節(jié)約空間。
6.設(shè)A和B是稀疏矩陣,都以三元組作為存儲(chǔ)結(jié)構(gòu),請(qǐng)寫出矩陣相加的算法C=A+B。
//稀疏矩陣的三元組表示
#include
usingnamespacestd;
#defineM50
#defineN50
#defineMaxSize20
typedefintElemType;
typedefstruct
{
intr;
intc;
ElemTyped;
}TupNode;
typedefstruct
{
introws;
intcols;
intnums;
TupNodedata[MaxSize];
}TSMatrix;
intA[M][N],B[M][N];
//建立三元組
voidCreateMat(intA[M][N],TSMatrix
t.rows=row;t.cols=col;t.nums=0;
for(i=0;ib.data[j].c)
{
c.data[k].r=b.data[j].r;
c.data[k].c=b.data[j].c;
c.data[k].d=b.data[j].d;
j++;k++;
}
else
{
v=a.data[i].d+b.data[j].d;
if(v!=0)
{
c.data[k].r=a.data[i].r;
c.data[k].c=a.data[i].c;
c.data[k].d=v;
k++;
}
i++;j++;
}
}
elseif(a.data[i].r>row>>col;
cout>A[i][j];
cout>B[i][j];
CreateMat(A,a,row,col);
CreateMat(B,b,row,col);
cout并有∈E(G),稱vi為弧尾,vj為弧頭。
無向圖:若E(G)中的頂點(diǎn)偶對(duì)是無序的,則這些無序偶對(duì)就形成了無向邊,此時(shí)圖G稱為無向圖。
頂點(diǎn)的度、頂點(diǎn)的入度和頂點(diǎn)的出度:在無向圖中,與頂點(diǎn)vi相關(guān)聯(lián)的邊的數(shù)目稱為頂點(diǎn)vi的度。在有向圖中,以頂點(diǎn)vi為弧頭的弧的數(shù)目稱為頂點(diǎn)vi的入度;以頂點(diǎn)vi為弧尾的弧的數(shù)目稱為vi的出度;頂點(diǎn)vi的入度和出度之和稱為vi的度。
路徑和路徑長(zhǎng)度:在圖G中,若存在一個(gè)頂點(diǎn)序列(0iv,1iv,…,1-niv),使得對(duì)于隨意
0≤j∈有相同弧尾nV1的下一條弧。不同表示辦法獵取到的結(jié)果會(huì)有所不同(鄰接矩陣法按頂點(diǎn)編號(hào)挨次,鄰接壓縮表和鄰接鏈表按邊的添加挨次)。
添加一個(gè)頂點(diǎn):向圖中添加一個(gè)新頂點(diǎn)。
添加一條邊:對(duì)無向圖,向圖中添加一條新邊;對(duì)有向圖,向圖中添加一條新弧。獵取一個(gè)頂點(diǎn)中存儲(chǔ)的數(shù)據(jù):按照頂點(diǎn)編號(hào)獵取該頂點(diǎn)中存儲(chǔ)的數(shù)據(jù)。
推斷一條邊是否存在:對(duì)無向圖,推斷兩個(gè)頂點(diǎn)nV1和nV2之間是否存在邊;對(duì)有向圖,推斷是否存在從頂點(diǎn)nV1到頂點(diǎn)nV2的弧。
設(shè)置一條邊的權(quán):對(duì)無向圖,設(shè)置指定邊(nV1,nV2)上的權(quán);對(duì)有向圖,設(shè)置指定弧上的權(quán)。
獵取一條邊的權(quán):對(duì)無向圖,獵取指定邊(nV1,nV2)上的權(quán);對(duì)有向圖,獵取指定弧上的權(quán)。
5.請(qǐng)簡(jiǎn)述圖的三種常用表示辦法。
鄰接矩陣法:用矩陣來表示各頂點(diǎn)之間的銜接關(guān)系。對(duì)于有n個(gè)頂點(diǎn)的圖G=(V,E),其鄰接矩陣A為n*n的方陣,元素A[i][j](0≤i,j∈上的權(quán)。
鄰接壓縮表:鄰接矩陣的一種壓縮表示形式,使用3個(gè)挨次表來表示圖中頂點(diǎn)之間的銜接關(guān)系和權(quán)。設(shè)圖中共有n個(gè)頂點(diǎn){v0,v1,…,vn-1},3個(gè)挨次表分離為s、w和h。在s中依次記錄與頂點(diǎn)vi(i=0,1,…,n-1)相關(guān)聯(lián)的頂點(diǎn);在w中依次記錄s中存儲(chǔ)的各條邊的權(quán);在h中依次記錄與頂點(diǎn)vi相關(guān)聯(lián)的頂點(diǎn)在s中的起始存儲(chǔ)位置。
鄰接鏈表:圖的一種鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。每個(gè)頂點(diǎn)中設(shè)置一個(gè)指向鏈表頭的指針,在鏈表中保存與該頂點(diǎn)相鄰接的頂點(diǎn)信息(包括頂點(diǎn)位置及兩個(gè)頂點(diǎn)形成的邊的權(quán))。
6.請(qǐng)簡(jiǎn)述圖的兩種常用遍歷辦法及每一種遍歷辦法中結(jié)點(diǎn)的拜訪挨次。
廣度優(yōu)先遍歷:類似于樹的逐層遍歷,即先從某一個(gè)頂點(diǎn)開頭拜訪,然后拜訪與該頂點(diǎn)相鄰接且未被拜訪過的頂點(diǎn)集V1(G),再拜訪與V1(G)中頂點(diǎn)相鄰接且未被拜訪過的頂點(diǎn)集V2(G),重復(fù)該過程直至與初始頂點(diǎn)連通的全部頂點(diǎn)都被拜訪完。對(duì)于非連通圖或非強(qiáng)連通圖,還要從某一個(gè)未被拜訪的頂點(diǎn)開頭重復(fù)上一過程,直至全部頂點(diǎn)拜訪完畢。
深度優(yōu)先遍歷:類似于樹的先序遍歷,即從某一個(gè)頂點(diǎn)開頭拜訪,拜訪后將該頂點(diǎn)去
除得到若干子圖,對(duì)每個(gè)子圖再依次舉行深度優(yōu)先遍歷。
7.請(qǐng)列舉最小生成樹和最短路徑可以用于解決什么應(yīng)用問題。
請(qǐng)參考例6-1和例6-2。
8.請(qǐng)簡(jiǎn)述Prim算法的作用和詳細(xì)步驟。
Prim算法用于最小生成樹問題求解。對(duì)于有n個(gè)頂點(diǎn)的圖G=(V,E),Prim算法從空樹T開頭,根據(jù)以下規(guī)章將n個(gè)頂點(diǎn)和n-1條邊依次添加到樹中,形成最小生成樹:
(a)從某一頂點(diǎn)v0'開頭,將該頂點(diǎn)作為樹的根結(jié)點(diǎn)加入到T中,使得T中的數(shù)據(jù)元素集合D={v0'},數(shù)據(jù)元素關(guān)系集合R={}。
(b)對(duì)于一個(gè)頂點(diǎn)在集合D中、另一個(gè)頂點(diǎn)在集合V-D中的那些邊,找出權(quán)最小的一條邊,將該邊在集合V-D中的頂點(diǎn)vi'(i=1,2,…,n-1)加入到集合D中,并將頂點(diǎn)間關(guān)系(jD(vj',vi')+D(vi',vk'),
則表明路徑(vj',…,vi',…,vk')的長(zhǎng)度更短,此時(shí)令D(vj',vk')=D(vj',vi')+D(vi',vk')并更新從頂點(diǎn)vj'到頂點(diǎn)vk'的路徑。
第7章排序算法
1.請(qǐng)簡(jiǎn)述排序的作用。
排序的作用是將一個(gè)待排序元素集合按關(guān)鍵字遞增(或遞減)挨次收拾為一個(gè)有序序列。
2.請(qǐng)簡(jiǎn)述穩(wěn)定排序和不穩(wěn)定排序的含義。
若采納某種排序算法對(duì)任一組元素舉行排序,在排序前后,那些具有相同關(guān)鍵字值的元素之間的相對(duì)次序都保持不變,則將這種排序算法稱為是穩(wěn)定的,否則稱為是不穩(wěn)定的。3.請(qǐng)簡(jiǎn)述各種排序算法的適用范圍。
排序算法的適用范圍如下:
(a)直接插入排序、容易挑選排序和冒泡排序都是容易排序算法,它們的時(shí)光復(fù)雜度和空間復(fù)雜度分離為O(n2)和O(1)。若待排序元素?cái)?shù)量n較小,可以選用直接插入排序和冒泡排序。另外,當(dāng)待排序元素基本有序時(shí),也應(yīng)選用直接插入排序和冒泡排序,此時(shí)時(shí)光復(fù)雜度都能達(dá)到O(n)。若元素本身數(shù)據(jù)量較大,元素移動(dòng)操作代價(jià)較高,則應(yīng)選用平均移動(dòng)元素次數(shù)最少的容易挑選排序。希爾排序是對(duì)直接插入排序算法的改進(jìn),大大降低了時(shí)光復(fù)雜度,但它是一種不穩(wěn)定的排序算法。
(b)堆排序、迅速排序和歸并排序主要適用于待排序元素?cái)?shù)量n較大的狀況,當(dāng)待排序元素?cái)?shù)量n較小時(shí),它們的性能有可能劣于容易排序算法。因此,在實(shí)際應(yīng)用時(shí),迅速排序算法和歸并排序算法常常與容易排序算法結(jié)合使用(例如,可以先用迅速排序算法將集合劃分為規(guī)模更小的子集合,對(duì)于元素?cái)?shù)量較小的子集合,則用直接插入排序算法舉行排序)。在全部平均時(shí)光復(fù)雜度為O(nlog2n)的算法中,盡管迅速排序在最壞狀況下時(shí)光復(fù)雜度較高,但它通常被認(rèn)為是平均性能最好的一種算法,并且通過優(yōu)化可以降低最壞狀況浮現(xiàn)的概率。歸并排序是一種穩(wěn)定的排序算法,其時(shí)光性能普通要優(yōu)于堆排序,但它所需要的輔助空間較多,當(dāng)應(yīng)用環(huán)境要求排序前后具有相同值的元素相對(duì)次序不能轉(zhuǎn)變時(shí)可以考慮使用。堆排序所需的輔助空間最少,當(dāng)可用空間十分有限時(shí)可以考慮使用。
(c)箱排序和基數(shù)排序的時(shí)光復(fù)雜度最低,但它們的空間復(fù)雜度最高。箱排序主要適用于待排序元素長(zhǎng)度(即d值)較小的狀況,在實(shí)際中應(yīng)用不多;基數(shù)排序是箱排序的改進(jìn),主要適用于整數(shù)或字符串的排序,或者與其他排序算法結(jié)合舉行實(shí)數(shù)的排序(例如,可以先用基數(shù)排序算法按整數(shù)部分將元素分成若干個(gè)子集合,再對(duì)每個(gè)子集合應(yīng)用直接插入排序算法舉行排序)。
5.請(qǐng)簡(jiǎn)述插入排序、挑選排序、交換排序、歸并排序和分配排序的原理。
插入排序:按關(guān)鍵字大小每次將一個(gè)待排序的元素插入到已排序的序列中,直至全部元素都插入完畢。
挑選排序:每次從待排序的元素中挑選具有最?。ɑ蜃畲螅╆P(guān)鍵字的元素放到已排序序列的尾部(或頭部),直至全部元素都排序完畢。
交換排序:從待排序的元素中挑選兩個(gè)次序相反的元素舉行交換,直至隨意兩個(gè)元素的次序都正確。
K路歸并排序:每次將K(K≥2)個(gè)已排序的子序列組合在一起,形成一個(gè)有序的序列,重復(fù)該過程直至得到一個(gè)包含全部待排序元素的有序序列。
分配排序:按照元素本身所具有的值將各元素逐一映射到一組有序空間中,最后再依次從有序空間中將各元素取出即形成了排序結(jié)果。
5.請(qǐng)簡(jiǎn)述直接插入排序的詳細(xì)步驟。
直接插入排序是一種容易排序算法,其詳細(xì)步驟為:
(a)初始已排序區(qū)為空,將第一個(gè)待排序的元素插入到已排序區(qū)中。
(b)將后繼每一個(gè)待排序的元素依次取出,并根據(jù)關(guān)鍵字大小將其插入到已排序區(qū)中的適當(dāng)位置,使該序列仍然有序。
(c)重復(fù)上一步驟直至將待排序的元素都插入到已排序序列中。
6.請(qǐng)簡(jiǎn)述希爾排序的詳細(xì)步驟。
希爾排序,又稱為“縮小增量排序”,其詳細(xì)步驟為:
(a)令n為待排序元素?cái)?shù)目,設(shè)置增量序列{d0,d1,…,dk},其中n>d0>d1>…>dk=1。
(b)按增量di(i依次取值為0,1,…,k)將待排序元素分為di組,將全部下標(biāo)距離為di的倍數(shù)的元素放在同一組中,即R[1],R[1+di],R[1+2*di],…在第一組中,R[2],R[2+di],R[2+2*di],……在其次組中,……,依此類推。然后分離在各組內(nèi)舉行直接插入排序。
(c)重復(fù)上一步驟直至最后以1為增量對(duì)全部待排序元素舉行直接插入排序。
7.請(qǐng)簡(jiǎn)述容易挑選排序的詳細(xì)步驟。
容易挑選排序是一種容易排序算法,其詳細(xì)步驟為:
(a)初始已排序區(qū)為空,待排序區(qū)包含全部待排序元素。
(b)從待排序區(qū)中挑選具有最小關(guān)鍵字的元素,將其與待排序區(qū)的第一個(gè)元素交換位置,并將該位置加到已排序區(qū)中。
(c)重復(fù)上一步驟直至全部元素都排序完畢。
8.請(qǐng)簡(jiǎn)述堆的定義和堆的構(gòu)建過程。
堆的定義:
對(duì)于包含n個(gè)元素的集合R={R[1],R[2],…,R[n]},若滿足:
(1)R[i]≤R[2*i]且R[i]≤R[2*i+1](即R所表示的徹低二叉樹中每一棵子樹的根結(jié)點(diǎn)的值均不大于其孩子結(jié)點(diǎn)的值)。
(2)或R[i]≥R[2*i]且R[i]≥R[2*i+1](即R所表示的徹低二叉樹中每一棵子樹的根結(jié)點(diǎn)的值均不小于其孩子結(jié)點(diǎn)的值)。
則稱集合R為堆。若滿足前一個(gè)條件則稱R為小根堆,滿足后一個(gè)條件則稱R為大根堆。
堆的構(gòu)建過程:
堆普通采納自底向上的構(gòu)建辦法,即在將以某一結(jié)點(diǎn)為根結(jié)點(diǎn)的二叉樹構(gòu)建成堆之前,先將其左子樹和右子樹構(gòu)建成堆。以葉子結(jié)點(diǎn)為根的子樹必定是堆,因此,對(duì)于由n個(gè)元素構(gòu)成的徹低二叉樹,其對(duì)應(yīng)的堆的構(gòu)建過程從R[?n/2?]作為根結(jié)點(diǎn)的子樹開頭,依次對(duì)R[?n/2?-1]、R[?n/2?-2]、…、R[1]作為根結(jié)點(diǎn)的樹舉行堆的構(gòu)建。
在將一棵R[i]作為根結(jié)點(diǎn)的子樹收拾為堆時(shí),惟獨(dú)根結(jié)點(diǎn)不滿足堆的條件,因此,需將根結(jié)點(diǎn)與后繼層中的結(jié)點(diǎn)依次比較并不斷將根結(jié)點(diǎn)下移直至該子樹滿足堆的條件,這里以大根堆構(gòu)建為例介紹其詳細(xì)過程:
(a)若R[i]存在左孩子R[2*i],則令j=2*i;若R[i]存在右孩子R[2*i+1]且R[2*i+1]>R[2*i],則令j=2*i+1。將R[j]與R[i]比較,若R[i]較小,則將R[i]和R[j]交換,并令i=j。
(b)重復(fù)上述步驟直至R[i]無孩子結(jié)點(diǎn)或R[i]比其孩子結(jié)點(diǎn)都大,此時(shí)該子樹即為堆。
9.請(qǐng)簡(jiǎn)述堆排序的詳細(xì)步驟。
堆排序的詳細(xì)過程:
(a)采納自底向上的辦法將包含n個(gè)元素的待排序集合R={R[1],R[2],…,R[n]}收拾為大根堆,其元素?cái)?shù)目i=n,初始時(shí)已排序集合R'為空集;
(b)將R[1]與R[i]交換,并將i算作已排序集合中的元素位置,更新待排序集合中最后一個(gè)元素的位置i=i-1,此時(shí)待排序集合R={R[1],R[2],…,R[i]},已排序集合R'={R[i+1],
R[i+2],…,R[n]}。明顯,待排序集合R={R[1],R[2],…,R[i]}中惟獨(dú)根結(jié)點(diǎn)R[1]不滿足大根堆的條件,通過下移R[1]重新將R收拾為大根堆;
(c)重復(fù)上一步驟直至待排序集合R={R[1]},此時(shí)直接將R[1]作為已排序集合R'中的元素,堆排序過程結(jié)束。
10.請(qǐng)簡(jiǎn)述冒泡排序的詳細(xì)步驟。
冒泡排序是一種容易排序算法,其詳細(xì)步驟為:
(a)初始已排序區(qū)為空,待排序區(qū)包含全部待排序元素。
(b)在一輪排序中,對(duì)待排序區(qū)全部相鄰元素先前至后舉行兩兩比較,若相鄰兩個(gè)元素次序相反(即前一個(gè)元素的關(guān)鍵字值大于后一個(gè)元素的關(guān)鍵字值),則交換它們的位置。每輪排序后,待排序區(qū)中的最大元素會(huì)移到待排序區(qū)的尾部,將待排序區(qū)的最后一個(gè)元素放到已排序區(qū)的頭部。
(c)重復(fù)上一步驟直至待排序區(qū)中只剩下一個(gè)元素或者在一輪排序中沒有浮現(xiàn)相鄰元素交換的狀況,此時(shí)直接將待排序區(qū)中的全部元素按原次序放到已排序區(qū)的頭部,冒泡排序結(jié)束。
11.請(qǐng)簡(jiǎn)述迅速排序中劃分的含義和過程。
劃分的含義:
劃分是以指定元素x為基準(zhǔn)將一個(gè)集合R分為兩個(gè)子集R1和R2,其中R1中的元素都小于或等于x,R2中的元素都大于或等于x。
劃分的過程:
對(duì)于包含(high-low+1)個(gè)元素的待排序集合R={R[low],R[low+1],…,R[high]},以R[k](low≤k≤high)為基準(zhǔn)對(duì)其舉行劃分的詳細(xì)過程為:
(a)令i、j分離指向集合R的第一個(gè)元素和最后一個(gè)元素(即i=low、j=high),并將R[k]與R[i]交換(即初始基準(zhǔn)元素在i所指向的位置,此時(shí)基準(zhǔn)元素前面沒有任何元素,下面向基準(zhǔn)元素后面、位置在i+1到j(luò)之間的元素根據(jù)從后至前的挨次逐一檢查其是否大于或等于基準(zhǔn)元素)。
(b)若j!=i且R[j]≥R[i],則令j=j-1,重復(fù)直至R[j]R[j]或i==j。上述處理后,若i!=j(即通過R[i]>R[j]這個(gè)條件退出循環(huán))則將R[i]與R[j]交換、j=j-1,并回到上一步(該步處理結(jié)束后,基準(zhǔn)元素在i所指向的位置,此時(shí)基準(zhǔn)元素前面的元素都小于或等于基準(zhǔn)元素,而位置j后面的元素都大于或等于基準(zhǔn)元素,下面繼續(xù)對(duì)基準(zhǔn)元素后面、位置在i+1到j(luò)之間的元素根據(jù)從后至前的挨次逐一檢查其是否大于或等于基準(zhǔn)元素);否則集合劃分操作結(jié)束。
12.請(qǐng)簡(jiǎn)述迅速排序的詳細(xì)步驟。
迅速排序就是對(duì)集合不斷劃分的過程:通過劃分可以將一個(gè)集合分為兩個(gè)子集合,若子集合中元素?cái)?shù)目大于1則再對(duì)子集合分離舉行劃分,重復(fù)該過程直至終于每個(gè)子集合中元素?cái)?shù)目都小于或等于1時(shí)迅速排序結(jié)束。
13.請(qǐng)簡(jiǎn)述二路歸并排序的詳細(xì)步驟。
二路歸并排序的詳細(xì)步驟為:
(a)對(duì)于包含n個(gè)元素的待排序集合,將其分為n個(gè)長(zhǎng)度為1的子序列。
(b)將每?jī)蓚€(gè)相鄰的子序列舉行歸并,得到?n/2?個(gè)長(zhǎng)度為2的子序列和0或1個(gè)長(zhǎng)
度為1的子序列。
(c)在此基礎(chǔ)上,再對(duì)每?jī)蓚€(gè)相鄰的子序列舉行歸并,得到?n/4?個(gè)長(zhǎng)度為4的子序列和0或1個(gè)長(zhǎng)度小于4的子序列。
(d)重復(fù)該過程直至得到一個(gè)長(zhǎng)度為n的有序序列為止。
14.請(qǐng)簡(jiǎn)述箱排序的詳細(xì)步驟。
箱排序的詳細(xì)步驟為:
(1)假設(shè)待排序元素的取值范圍為m~m+n-1,則箱子數(shù)量為n,設(shè)置包含n個(gè)元素的隊(duì)列集合B={B[0],B[1],…,B[n-1]}代表n個(gè)箱子。
(2)依次取出每一個(gè)待排序元素,若其值為m+i(i=0,1,…,n-1),則通過入隊(duì)操作將其放在箱子B[i]中。
(3)從B[0]開頭,依次檢查集合B中每一個(gè)隊(duì)列所代表的箱子,若箱子不為空,則通過出隊(duì)操作將箱子中的元素逐個(gè)取出并依次加到已排序集合中。
15.請(qǐng)簡(jiǎn)述基數(shù)排序的詳細(xì)步驟。
基數(shù)排序是對(duì)箱排序的改進(jìn)和推廣,它先將待排序元素按規(guī)章分解得到多個(gè)重量、再按照每一個(gè)重量對(duì)元素舉行多次箱排序。
(a)對(duì)于數(shù)字排序問題,基數(shù)排序辦法先將每一個(gè)數(shù)字寫成以r為基數(shù)的按權(quán)綻開式形式:N=an-1*rn-1+…+a0*r0+a-1*r-1+…+a-m*r-m;再根據(jù)從低位到高位(即從r-m開頭到rn-1)的挨次舉行n+m次箱排序。
(b)對(duì)于字符串排序問題,基數(shù)排序辦法根據(jù)從后至前的挨次對(duì)字符串中的每個(gè)字符分離舉行箱排序。若待排序字符串中最長(zhǎng)的字符串長(zhǎng)度為n,則需舉行n次箱排序;若某一字符串長(zhǎng)度為m(0≤m≤n),則該字符串在前(n-m)次箱排序中對(duì)應(yīng)的字符值為'\0'。
第8章查找算法
1.請(qǐng)簡(jiǎn)述查找的作用。
查找的作用是按照給定值從一個(gè)數(shù)據(jù)集合中搜尋某個(gè)元素。若某個(gè)元素的關(guān)鍵字值與給定值相等,則查找勝利;否則查找失敗。
2.請(qǐng)簡(jiǎn)述靜態(tài)查找和動(dòng)態(tài)查找的含義。
靜態(tài)查找只按照給定值在數(shù)據(jù)集合中按關(guān)鍵字查找匹配元素、拜訪匹配元素的屬性,而不對(duì)數(shù)據(jù)集合舉行插入元素、刪除元素等操作;而動(dòng)態(tài)查找可能會(huì)在查找過程中向數(shù)據(jù)集合中插入一個(gè)新元素或從數(shù)據(jù)集合中刪除一個(gè)已有元素。
3.請(qǐng)簡(jiǎn)述各種查找算法的適用范圍。
各種查找算法的適用范圍:
(a)挨次查找雖然查找效率最低,但其對(duì)待查找數(shù)據(jù)集合的存儲(chǔ)結(jié)構(gòu)無特殊要求,在對(duì)數(shù)據(jù)集合舉行增、刪、改等操作時(shí)效率較高,因此,按照那些不需要常常作查找操作的關(guān)鍵字舉行查找時(shí),普通采納挨次查找算法。若常常作查找操作,則應(yīng)使用效率較高的其他查找算法。
(b)折半查找和分塊查找主要適用于數(shù)據(jù)集合增、刪、改等操作較少的狀況;二叉排序樹查找則適用于數(shù)據(jù)集合變化較頻繁的狀況。
(c)哈希查找雖然在理論上具有最短的平均查找長(zhǎng)度,但它占用的存儲(chǔ)空間較多,且在實(shí)際中惟獨(dú)哈希函數(shù)構(gòu)造得好才干達(dá)到常量級(jí)的平均查找長(zhǎng)度。而要想構(gòu)造出好的哈希函數(shù),必需以大量數(shù)據(jù)為基礎(chǔ),因此,哈希查找主要適用于數(shù)據(jù)分布已知的狀況。
4.請(qǐng)簡(jiǎn)述挨次查找對(duì)待查找數(shù)據(jù)集合的要求及挨次查找的詳細(xì)步驟。
挨次查找是一種最容易、直觀的查找算法,適用于采納任何存儲(chǔ)結(jié)構(gòu)的數(shù)據(jù)集合,其詳細(xì)步驟為:
(a)按預(yù)先規(guī)定的挨次依次將數(shù)據(jù)集合中每個(gè)元素的關(guān)鍵字與給定值舉行比較,若某個(gè)元素的關(guān)鍵字與給定值相同,則查找勝利;
(b)若遍歷全部元素后,仍沒有找到關(guān)鍵字與給定值相同的元素,則查找失敗。
5.請(qǐng)簡(jiǎn)述折半查找對(duì)待查找數(shù)據(jù)集合的要求及折半查找的詳細(xì)步驟。
折半查找,又稱二分查找,它要求數(shù)據(jù)集合采納挨次表存儲(chǔ)結(jié)構(gòu),且數(shù)據(jù)集合中的元素是按關(guān)鍵字大小有序羅列的。假設(shè)數(shù)據(jù)集合的元素按關(guān)鍵字遞增羅列,折半查找算法的詳細(xì)步驟為:
(a)對(duì)于包含n個(gè)元素的遞增數(shù)據(jù)集合R={R[1],R[2],…,R[n]}(R[i]≤R[i+1]),按照給定元素K舉行折半查找,初始化待查找數(shù)據(jù)集合的下標(biāo)起始位置low=1和結(jié)束位置high=n。
(b)計(jì)算中間元素下標(biāo)mid=?(low+high)/2?,若R[mid]==K,則查找勝利,折半查找算法結(jié)束;若R[mid]K,則令high=mid-1。
(c)若新的待查找數(shù)據(jù)集合不為空,即low≤high,則返回到上一步在新的數(shù)據(jù)集合(R[low],R[low+1],…,R[high])上繼續(xù)舉行折半查找;否則查找失敗。
6.請(qǐng)簡(jiǎn)述分塊查找對(duì)待查找數(shù)據(jù)集合的要求及分塊查找的詳細(xì)步驟。
在分塊查找算法中,除了待查找的數(shù)據(jù)集合外,還需建立一個(gè)索引表。待查數(shù)據(jù)集合與索引表的關(guān)系描述如下:(a)將包含n個(gè)元素的待查找數(shù)據(jù)集合勻稱分為b塊(即b個(gè)子集合),前b-1塊中元素?cái)?shù)目s=?n/b?,最后一塊中元素?cái)?shù)目小于等于s。(b)分塊后塊內(nèi)元素可以無序,但塊間必需有序,這里假設(shè)塊間為遞增羅列,即第i+1塊中的任一元素大于第i塊中的任一元素(i<b)。(c)構(gòu)造一個(gè)包含b個(gè)元素的索引表,用于記錄每塊的起始
位置和最大元素值。
分塊查找算法的詳細(xì)步驟為:(a)在索引表中查找,確定待查找元素在哪一塊,因?yàn)樗饕碛行颍虼丝梢允褂枚植檎宜惴ā#╞)在已確定的塊中,舉行挨次查找。
7.請(qǐng)簡(jiǎn)述二叉排序樹的定義。
二叉排序樹,又稱二叉查找樹,它或者是一棵空樹,或者是具有如下性質(zhì)的二叉樹:(a)若它的左子樹非空,則左子樹上全部結(jié)點(diǎn)的值均小于根結(jié)點(diǎn)的值。
(b)若它的右子樹非空,則右子樹上全部結(jié)點(diǎn)的值均大于根結(jié)點(diǎn)的值。
(c)左、右子樹也分離是二叉排序樹。
8.請(qǐng)簡(jiǎn)述二叉排序樹的插入和創(chuàng)建過程。
二叉排序樹的插入過程:
在二叉排序樹中插入一個(gè)新結(jié)點(diǎn),應(yīng)保證插入新結(jié)點(diǎn)后的二叉樹仍然是一棵二叉排序樹。對(duì)于一個(gè)給定元素K,將其插入到二叉排序樹中的詳細(xì)步驟如下:
(a)若二叉排序樹為一棵空樹,則將元素K作為二叉排序樹的根結(jié)點(diǎn)。
(b)若K等于根結(jié)點(diǎn)的值,則該元素已經(jīng)是二叉排序樹中的結(jié)點(diǎn),不需重復(fù)插入,直接返回;若K小于根結(jié)點(diǎn)的值,則將K插入到左子樹中;若K大于根結(jié)點(diǎn)的值,則將K插入到右子樹中。重復(fù)該步驟,直至要插入的子樹為空,此時(shí)將K作為該子樹的根結(jié)點(diǎn)。
二叉排序樹的創(chuàng)建過程就是不斷插入新結(jié)點(diǎn)的過程。
9.請(qǐng)簡(jiǎn)述二叉排序樹的查找過程。
對(duì)于給定值K,先將K與根結(jié)點(diǎn)的值比較,若相等則查找勝利;若K小于根結(jié)點(diǎn)的值,則在左子樹中繼續(xù)舉行二叉排序樹的查找;否則,若K大于根結(jié)點(diǎn)的值,則在右子樹中繼續(xù)舉行二叉排序樹的查找。重復(fù)該過程,直至找到匹配的結(jié)點(diǎn),查找勝利;或者子樹為空,查找失敗。
10.請(qǐng)簡(jiǎn)述哈希表的元素存儲(chǔ)原理。
確定一函數(shù)h,對(duì)于關(guān)鍵字值是k的元素,以k為自變量計(jì)算函數(shù)值h(k),這個(gè)函數(shù)值被解釋為一片延續(xù)存儲(chǔ)空間中的一個(gè)地址(即數(shù)組中的一個(gè)下標(biāo)值),元素即被存入到這個(gè)地址中。
11.請(qǐng)簡(jiǎn)述常用的四種哈希函數(shù)及其計(jì)算規(guī)章。
除余法:選取一個(gè)適當(dāng)?shù)恼麛?shù)p(通常p為不大于哈希表存儲(chǔ)空間尺寸的最大素?cái)?shù)),以元素的關(guān)鍵字值k除以p,得到的余數(shù)作為元素的存儲(chǔ)地址,即h(k)=k%p。
數(shù)字分析法:若元素的關(guān)鍵字由多位組成,且關(guān)鍵字的位數(shù)比存儲(chǔ)空間地址碼位數(shù)多、每一位的取值范圍及關(guān)鍵字的取值分布狀況預(yù)先知道,則可以對(duì)元素關(guān)鍵字的各位舉行分析,去掉分布較集中的位、保留分布較勻稱的位。
折疊法:若元素的關(guān)鍵字由多位組成,且關(guān)鍵字的位數(shù)比存儲(chǔ)空間地址碼位數(shù)多,但關(guān)鍵字的取值分布狀況未知,則可以用折疊法將關(guān)鍵字分為幾段(除了最后一段位數(shù)可以少一些,其他各段的位數(shù)均等于存儲(chǔ)空間地址碼位數(shù)),并將全部段的值做疊加求和運(yùn)算,將疊加和的最高位進(jìn)位舍去后取剩余部分作為元素的存儲(chǔ)地址。
平方取中法:對(duì)元素的關(guān)鍵字值求平方,并取中間幾位作為元素的存儲(chǔ)地址。
12.請(qǐng)簡(jiǎn)述常用的兩種哈希表矛盾處理辦法。
開放定址法:根據(jù)某個(gè)探查序列在哈希表中舉行搜尋,直至找到一個(gè)空閑的地址,將發(fā)生矛盾的新元素存儲(chǔ)在該地址中。
拉鏈法:將全部同義詞存儲(chǔ)在一個(gè)線性鏈表中,從而避開開放定址法中的“二次聚攏”現(xiàn)象。用拉鏈法構(gòu)造的哈希表,若其有m個(gè)存儲(chǔ)地址(下標(biāo)為0,1,…,m-1),則每個(gè)地址存儲(chǔ)一個(gè)線性鏈表的頭指針,映射到地址i的元素以結(jié)點(diǎn)的方式插入到地址i所對(duì)應(yīng)的鏈表中。
第9章文件
1.請(qǐng)簡(jiǎn)述文件的定義。
文件,是由大量具有相同性質(zhì)的記錄組成的集合。
2.請(qǐng)簡(jiǎn)述文件的組成。
文件是大量性質(zhì)相同的數(shù)據(jù)記錄的集合,即一個(gè)文件包含一條或多條記錄。
記錄是一個(gè)實(shí)體的全部數(shù)據(jù)項(xiàng)的集合,即一條記錄包含一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)。
數(shù)據(jù)項(xiàng)(也稱為字段或?qū)傩裕┦欠从硨?shí)體某一方面屬性的數(shù)據(jù)表示,是文件存取最基本的操作對(duì)象。
3.請(qǐng)簡(jiǎn)述文件的分類。
按文件中記錄的信息長(zhǎng)度,可以將文件分為定長(zhǎng)記錄文件和不定長(zhǎng)記錄文件。若每個(gè)記錄含有相同長(zhǎng)度的信息,則稱這類記錄為定長(zhǎng)記錄;否則,若每個(gè)記錄含有不同長(zhǎng)度的信息,則稱這類記錄為不定長(zhǎng)記錄。由定長(zhǎng)記錄組成的文件稱為定長(zhǎng)文件;由不定長(zhǎng)記錄組成的文件則稱為不定長(zhǎng)文件。
按記錄中關(guān)鍵字的數(shù)目,可以將文件分為單關(guān)鍵字文件和多關(guān)鍵字文件。若文件中的記錄惟獨(dú)一個(gè)用于唯一標(biāo)識(shí)記錄的主關(guān)鍵字,則這類文件稱為單關(guān)鍵字文件;若文件中的記錄除了含有一個(gè)主關(guān)鍵字之外,還包含若干次關(guān)鍵字,則這類文件稱為多關(guān)鍵字文件。
4.請(qǐng)簡(jiǎn)述文件檢索操作中的四種查詢方式。
按照檢索條件的不同可以分為以下4種查詢方式:
(a)容易查詢:按照給定值x按單個(gè)關(guān)鍵字查詢關(guān)鍵字值k等于x的記錄。
(b)區(qū)域查詢:按照給定取值范圍按單個(gè)關(guān)鍵字查詢滿足條件的記錄。
(c)函數(shù)查詢:按照統(tǒng)計(jì)函數(shù)計(jì)算的值查詢記錄。
(d)布爾查詢:將以上3種查詢用規(guī)律運(yùn)算符(包括規(guī)律與、規(guī)律或、規(guī)律非)銜接起來所形成的查詢。
5.請(qǐng)簡(jiǎn)述文件各維護(hù)操作的含義和過程。
文件維護(hù)是指對(duì)文件中記錄所舉行的插入、刪除、修改等操作。這些操作的詳細(xì)含義和操作過程描述如下:
(a)插入:向文件中添加一條新的記錄。若文件按某個(gè)關(guān)鍵字挨次羅列,則插入記錄前普通要先通過檢索確定插入點(diǎn)的位置。
(b)刪除:從文件中刪除一條記錄。刪除記錄前普通要先通過檢索確定所要?jiǎng)h除記錄的位置。
(c)修改:對(duì)記錄中的一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)舉行修改。若文件按某個(gè)關(guān)鍵字挨次羅列,且對(duì)關(guān)鍵字值舉行了修改操作,則修改后還需將記錄移動(dòng)到正確的位置(普通采納先刪除再插入的方式實(shí)現(xiàn))。
6.請(qǐng)簡(jiǎn)述文件的四種基本組織方式。
挨次結(jié)構(gòu)、索引結(jié)構(gòu)、散列結(jié)構(gòu)和鏈?zhǔn)浇Y(jié)構(gòu)。
7.請(qǐng)簡(jiǎn)述磁盤的規(guī)律結(jié)構(gòu)。
磁盤的結(jié)構(gòu)如下:
(a)一個(gè)磁盤包含若干個(gè)盤片,全部盤片組成了盤片組;每個(gè)盤片有上下兩面,稱為盤面;每個(gè)盤面上有無數(shù)同心圓形式的磁道,數(shù)據(jù)就存放在這些磁道上;每個(gè)磁道又可以劃分為若干段,稱為扇區(qū),一個(gè)扇區(qū)就是一次讀寫的最小數(shù)據(jù)量。
(b)每個(gè)盤面都配有一個(gè)讀寫磁頭,通過讀寫磁頭可以對(duì)磁道上的數(shù)據(jù)舉行讀寫操作;
全部讀寫磁頭都安裝在動(dòng)臂上,通過動(dòng)臂可以將讀寫磁頭移動(dòng)到任一磁道上;全部盤面上具有相同半徑的磁道就構(gòu)成了圓柱面,一個(gè)磁盤上圓柱面的個(gè)數(shù)就是一個(gè)盤面上的磁道數(shù),同一時(shí)刻全部讀寫磁頭都位于一個(gè)圓柱面上。
(c)主軸帶動(dòng)全部盤面高速旋轉(zhuǎn),使得讀寫磁頭可以拜訪到一個(gè)磁道上的全部扇區(qū)。
8.請(qǐng)簡(jiǎn)述對(duì)磁盤存儲(chǔ)器舉行一次讀寫操作的詳細(xì)過程。
對(duì)磁盤存儲(chǔ)器舉行一次讀寫操作的詳細(xì)步驟為:
(a)按照待讀寫數(shù)據(jù)所處的柱面,用動(dòng)臂將讀寫磁頭移動(dòng)到此柱面上。
(b)按照待讀寫數(shù)據(jù)所處的扇區(qū),用主軸帶動(dòng)盤面將該扇區(qū)轉(zhuǎn)到讀寫磁頭下面。
(c)用指定盤面上的讀寫磁頭讀寫所需數(shù)據(jù)。
9.請(qǐng)簡(jiǎn)述在磁盤上存儲(chǔ)信息的原則。
盤面的轉(zhuǎn)速很快,磁盤讀寫數(shù)據(jù)的時(shí)光大部分花在柱面定位上。尋查時(shí)光的長(zhǎng)短取決于讀寫磁頭移過的柱面數(shù),所以在磁盤上存儲(chǔ)信息時(shí)應(yīng)盡量將相關(guān)的信息放在同一柱面或者鄰近柱面上,以削減尋查時(shí)光。
10.請(qǐng)簡(jiǎn)述挨次文件的定義和分類。
挨次文件的定義:
挨次文件是結(jié)構(gòu)最容易的文件,文件中記錄的物理挨次與規(guī)律挨次全都,即記錄按其規(guī)律挨次依次存放在文件中。
挨次文件的分類:
根據(jù)存儲(chǔ)方式的不同,挨次文件可以分為延續(xù)挨次文件和串聯(lián)挨次文件。在延續(xù)挨次文件中,所有記錄挨次地存放在外存的一片延續(xù)存儲(chǔ)空間中。延續(xù)挨次文件的優(yōu)點(diǎn)是存取速度快,缺點(diǎn)是存儲(chǔ)空間尺寸需預(yù)先確定。在串聯(lián)挨次文件中,以塊為單位將記錄存儲(chǔ)在外存上,塊中的各記錄挨次存放在一片延續(xù)存儲(chǔ)空間中,但塊與塊之間可以不延續(xù),通過鏈指針將各塊按一定挨次銜接起來。串聯(lián)挨次文件的優(yōu)點(diǎn)是文件便于擴(kuò)充,缺點(diǎn)是存取速度慢。
根據(jù)記錄是否有序,挨次文件可以分為有序挨次文件和無序挨次文件。在有序挨次文件中,所有記錄按主關(guān)鍵字有序羅列;在無序挨次文件中,記錄按實(shí)際插入挨次羅列。有序挨次文件的優(yōu)點(diǎn)是若記錄定長(zhǎng)則按主關(guān)鍵字檢索時(shí)速度較快,無序挨次文件的優(yōu)點(diǎn)是插入記錄時(shí)效率較高。
11.請(qǐng)簡(jiǎn)述挨次文件批量處理的步驟。
將待處理的挨次文件稱為主文件,主文件按主關(guān)鍵字大小挨次羅列;對(duì)文件的插入、刪除、修改等操作哀求所有放在事務(wù)文件中。按照事務(wù)文件中的操作對(duì)主文件舉行更新生成新的主文件,詳細(xì)處理步驟如下:
(a)對(duì)事務(wù)文件根據(jù)主文件中主關(guān)鍵字的挨次舉行排序(對(duì)于修改主關(guān)鍵字值的操作,應(yīng)轉(zhuǎn)為刪除記錄和插入記錄兩個(gè)操作)。
(b)挨次讀出主文件與事務(wù)文件中的記錄,比較它們的主關(guān)鍵字值:
①若主文件記錄的關(guān)鍵字值小于事務(wù)文件記錄的關(guān)鍵字值,則說明沒有對(duì)該主文件記錄做任何操作,此時(shí)將主文件記錄直接寫入新的主文件中,并讀取下一條主文件記錄。
②若關(guān)鍵字值相同,則依據(jù)事務(wù)文件記錄舉行更改或刪除操作,若為刪除操作,則主文件記錄不需要寫入新的主文件中,若為修改操作則要將修改后的記錄寫入新的主文件中,操作完畢后分離讀取下一條主文件記錄和事務(wù)文件記錄。
③若主文件記錄的關(guān)鍵字值大于事務(wù)文件記錄的關(guān)鍵字值,則為插入操作,需將事務(wù)文件中的記錄直接寫入到新的主文件中,并讀取下一條事務(wù)文件記錄。
12.請(qǐng)簡(jiǎn)述索引文件的構(gòu)成。
索引文件由主文件和索引表兩部分構(gòu)成。主文件中存儲(chǔ)了全部的數(shù)據(jù)記錄;索引表是一個(gè)映射關(guān)系表,存儲(chǔ)了規(guī)律記錄和物理記錄的一一對(duì)應(yīng)關(guān)系。
13.請(qǐng)簡(jiǎn)述索引文件(即索引非挨次文件)和索引挨次文件的區(qū)分。
索引非挨次文件的主文件中各記錄是無序的;索引挨次文件的主文件中各記錄是按主關(guān)鍵字有序羅列的。
14.請(qǐng)簡(jiǎn)述索引文件的檢索過程。
索引文件的檢索過程為:
(a)將索引表讀入內(nèi)存中,并按照檢索條件在索引表中舉行查找(因?yàn)樗饕?xiàng)按關(guān)鍵字有序羅列,因此在索引表上可以采納折半查找算法)。
(b)若索引表中存在匹配項(xiàng),則按照匹配索引項(xiàng)中存儲(chǔ)的物理地址直接讀取外存上的相應(yīng)記錄;若索引表中不存在該記錄,則說明外存上也不存在該記錄、不需做外存拜訪操作。
15.請(qǐng)簡(jiǎn)述索引文件插入、刪除、修改等維護(hù)操作的過程。
插入:在索引文件中插入一條新的記錄時(shí),直接將該記錄寫入主文件的末尾,并在索引表中插入索引項(xiàng)。
刪除:在刪除一條記錄時(shí),只需在索引表中刪除對(duì)應(yīng)的索引項(xiàng)即可。
修改:在修改記錄時(shí),需將修改后的記錄寫入主文件的末尾,并同時(shí)對(duì)索引表舉行修改、將索引項(xiàng)中的物理地址改為修改后記錄的存儲(chǔ)地址。
16.請(qǐng)簡(jiǎn)述稠密索引和稀疏索引的區(qū)分。
在索引非挨次文件中,記錄沒有按關(guān)鍵字有序羅列,因此在建立索引表時(shí),每個(gè)記錄都必需對(duì)應(yīng)一個(gè)索引項(xiàng),這樣建立的索引表稱為稠密索引。這類索引表雖然管理成本較高,但它的優(yōu)點(diǎn)是按照索引表即可確定待檢索記錄是否存在并可以按照索引項(xiàng)直接定位到記錄,削減了外存操作。
在索引挨次文件中,記錄按關(guān)鍵字有序羅列,因此可以對(duì)文件中的記錄分塊,每塊對(duì)應(yīng)一個(gè)索引項(xiàng),這樣建立的索引表稱為稀疏索引。在做檢索操作時(shí),這類索引表只能給出匹配記錄可能在哪個(gè)范圍中,無法直接定位到記錄,但它占用的存儲(chǔ)空間小、便于管理。
17.請(qǐng)簡(jiǎn)述ISAM文件的組織辦法。
在ISAM文件中,每個(gè)柱面的磁道被分為3個(gè)部分:
(a)一部分磁道作為記錄存儲(chǔ)的基本區(qū),其中每一磁道將記錄按主關(guān)鍵字大小舉行有序挨次存儲(chǔ)。
(b)一部分磁道作為記錄存儲(chǔ)的溢出區(qū),在一個(gè)已滿磁道中插入新記錄時(shí),就會(huì)產(chǎn)生溢出的記錄(即該磁道容納不下的記錄),這些溢出記錄以鏈表形式存儲(chǔ)在溢出區(qū)中。
(c)一部分磁道作為索引區(qū),用于存儲(chǔ)磁道索引表。與基本區(qū)和溢出區(qū)相對(duì)應(yīng),表中的每一索引項(xiàng)又由基本索引項(xiàng)和溢出索引項(xiàng)組成?;舅饕?xiàng)用來存放基本區(qū)一個(gè)磁道中記錄的最大關(guān)鍵字值和第一個(gè)記錄的位置;溢出索引項(xiàng)用來存放從該磁道溢出記錄的最大關(guān)鍵字值和該磁道在溢出區(qū)中的第一個(gè)溢出記錄的位置。
18.請(qǐng)簡(jiǎn)述VSAM文件的組織辦法。
VSAM文件由索引集、挨次集和數(shù)據(jù)集三部分組成。文件的記錄都存放在數(shù)據(jù)集中,數(shù)據(jù)集中的每一個(gè)結(jié)點(diǎn)稱為一個(gè)控制區(qū)間,該區(qū)間是一片延續(xù)的存儲(chǔ)空間、按關(guān)鍵字挨次存儲(chǔ)若干條記錄;挨次集中存放每一控制區(qū)間的索引項(xiàng),索引項(xiàng)包括兩部分內(nèi)容:控制區(qū)間的最大關(guān)鍵字值和指向該控制區(qū)間的指針,若干規(guī)律上相鄰的控制區(qū)間的索引項(xiàng)就構(gòu)成了挨次集中的一個(gè)結(jié)點(diǎn);索引集是按樹型層次結(jié)構(gòu)組織的索引集合,雙親結(jié)點(diǎn)包含了指向孩子結(jié)點(diǎn)的指針及該孩子結(jié)點(diǎn)中的最大關(guān)鍵字值,以挨次集中的結(jié)點(diǎn)作為葉子結(jié)點(diǎn),可以構(gòu)造一棵以索引集為非葉子結(jié)點(diǎn)的B+樹。
19.請(qǐng)簡(jiǎn)述散列文件的組織辦法。
散列文件中的記錄是以桶為單位成組存放的。若一個(gè)桶能存放m條記錄,則當(dāng)桶中已有m條同義詞記錄時(shí),再存放第m+1條同義詞記錄就會(huì)發(fā)生“溢出”。在散列文件中,通
常采納拉鏈法作為矛盾處理辦法,即將第m+1條同義詞記錄存放到另一個(gè)稱為“溢出桶”的桶中,相應(yīng)地,將存放前m條同義詞記錄的桶稱為“基桶”,在基桶中設(shè)置一個(gè)指向溢出桶的指針。
20.請(qǐng)簡(jiǎn)述多關(guān)鍵字文件
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- TBS-Corey-lactone-aldehyde-生命科學(xué)試劑-MCE-2452
- Anti-Mouse-CD3E-Antibody-1E11-D-生命科學(xué)試劑-MCE-1878
- 8-Amino-7-oxononanoic-acid-hydrochloride-生命科學(xué)試劑-MCE-9983
- 3-O-Methylguanosine-5-O-triphosphate-sodium-3-O-Methyl-GTP-sodium-生命科學(xué)試劑-MCE-9300
- 二零二五年度大數(shù)據(jù)分析技術(shù)顧問聘請(qǐng)協(xié)議
- 二零二五年度游樂園場(chǎng)地租賃與兒童游樂設(shè)施安全標(biāo)準(zhǔn)制定合同
- 二零二五年度房屋貸款房屋買賣合同范本(含家具)
- 施工現(xiàn)場(chǎng)管理制度化
- 施工方案對(duì)籃球場(chǎng)材料的要求與選擇
- 高凈值人群海外稅務(wù)籌劃與財(cái)富保護(hù)策略
- 手術(shù)室植入物的管理
- Unit6AtthesnackbarStorytimeDiningwithdragons(課件)譯林版英語四年級(jí)上冊(cè)
- 2023年四川省公務(wù)員錄用考試《行測(cè)》真題卷及答案解析
- 機(jī)電一體化系統(tǒng)設(shè)計(jì)-第5章-特性分析
- YS/T 34.1-2011高純砷化學(xué)分析方法電感耦合等離子體質(zhì)譜法(ICP-MS)測(cè)定高純砷中雜質(zhì)含量
- LY/T 2016-2012陸生野生動(dòng)物廊道設(shè)計(jì)技術(shù)規(guī)程
- 單縣煙草專賣局QC課題多維度降低行政處罰文書出錯(cuò)率
- 健康養(yǎng)生課件
- 混雜控制系統(tǒng)課件
- 運(yùn)動(dòng)技能學(xué)習(xí)原理課件
- 《QHSE體系培訓(xùn)》課件
評(píng)論
0/150
提交評(píng)論