計(jì)算機(jī)2級(jí)公共基礎(chǔ)知識(shí)2_第1頁
計(jì)算機(jī)2級(jí)公共基礎(chǔ)知識(shí)2_第2頁
計(jì)算機(jī)2級(jí)公共基礎(chǔ)知識(shí)2_第3頁
計(jì)算機(jī)2級(jí)公共基礎(chǔ)知識(shí)2_第4頁
計(jì)算機(jī)2級(jí)公共基礎(chǔ)知識(shí)2_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

計(jì)算機(jī)等級(jí)考試

公共基礎(chǔ)知識(shí)

第2頁計(jì)算機(jī)二級(jí)考試公共基礎(chǔ)知識(shí)大綱

數(shù)據(jù)結(jié)構(gòu)與算法程序設(shè)計(jì)基礎(chǔ)軟件工程基礎(chǔ)數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)這四個(gè)方面在試卷中出現(xiàn)的情況是:選擇題10個(gè)(20分),填空題5個(gè)(10分),總分值占到了試卷卷面分的30%,是一個(gè)不小的比例。

第3頁計(jì)算機(jī)二級(jí)考試公共基礎(chǔ)知識(shí)試卷分析

章節(jié)考試時(shí)間數(shù)據(jù)結(jié)構(gòu)與算法程序設(shè)計(jì)基礎(chǔ)軟件工程基礎(chǔ)數(shù)據(jù)庫設(shè)計(jì)基礎(chǔ)2007年4月10分2分10分8分2007年9月12分4分8分6分2008年4月10分2分8分10分2008年9月10分2分8分10分2009年3月10分2分8分10分2009年9月10分2分8分10分2010年3月10分0分10分10分第4頁算法⒈算法的基本概念

2.算法復(fù)雜度的概念和意義

一、基本數(shù)據(jù)結(jié)構(gòu)與算法

數(shù)據(jù)結(jié)構(gòu)⒈數(shù)據(jù)結(jié)構(gòu)的概念⒉線性表⒊棧和隊(duì)列⒋樹與二叉樹⒌查找技術(shù)⒍排序技術(shù)

對(duì)于等級(jí)考試,這個(gè)部分的考核重點(diǎn)主要在算法和數(shù)據(jù)結(jié)構(gòu)的基本概念、二叉樹(遍歷、結(jié)點(diǎn)),還有排序和查找考試中也經(jīng)常會(huì)涉及到。第5頁算法的定義對(duì)解題方案準(zhǔn)確而完整的描述稱為算法。算法是程序設(shè)計(jì)的核心⒈算法的基本概念

算法是在有限步驟內(nèi)求解某一問題所使用的一組定義明確的規(guī)則。通俗點(diǎn)說,就是計(jì)算機(jī)解題的過程(計(jì)算的方法)。在這個(gè)過程中,無論是形成解題思路(推理實(shí)現(xiàn)的算法)還是編寫程序(操作實(shí)現(xiàn)的算法),都是在實(shí)施某種算法。例:n個(gè)數(shù)從大到小進(jìn)行排序。

有多種排序方法,常用的有冒泡排序、選擇排序等。算法不等于程序,也不等計(jì)算機(jī)方法,程序的編制不可能優(yōu)于算法的設(shè)計(jì)。第6頁

2.

算法的基本特征一個(gè)算法應(yīng)該具有以下五個(gè)重要的特征:

有窮性確定性輸入輸出可行性一個(gè)算法必須保證執(zhí)行有限步之后結(jié)束;算法的每一步驟必須有確切的定義;一個(gè)算法有0個(gè)或多個(gè)輸入,以刻畫運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸入是指算法本身定出了初始條件;一個(gè)算法有一個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒有輸出的算法是毫無意義的;算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次運(yùn)算后即可完成擁有足夠的情報(bào)第7頁算法與計(jì)算機(jī)程序算法——是一組邏輯步驟程序——用計(jì)算機(jī)語言描述的算法3.算法的表示INPUTrS=3.14*r*rPTINTS開始輸入RS=3.14*

R*R輸出S結(jié)束問題:輸入園的半徑,計(jì)算園的面積

一個(gè)算法的表示需要使用一些語言形式。傳統(tǒng)的算法-------圖形法,如“流程圖”和N-S圖目前常用的方法-------使用偽碼描述算法。第8頁冒泡排序的方法:1.掃描整個(gè)線性表,逐次對(duì)相鄰的兩個(gè)元素進(jìn)行比較,若為逆序,則交換;第一趟掃描的結(jié)果使最大的元素排到表的最后;2.除最后一個(gè)元素,對(duì)剩余的元素重復(fù)上述過程,將次大的數(shù)排到表的倒數(shù)第二個(gè)位置;3.重復(fù)上述過程;對(duì)于長(zhǎng)度為n的線性表,冒泡排序需要對(duì)表掃描n-1遍。

算法舉例:n個(gè)數(shù)排序第9頁4.算法的兩個(gè)基本要素:基本運(yùn)算和操作算術(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算數(shù)據(jù)傳輸控制結(jié)構(gòu)

順序選擇循環(huán)一是對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作;二是算法的控制結(jié)構(gòu)。算法基本設(shè)計(jì)方法:列舉法、歸納法、遞推、遞歸、減半遞推技術(shù)、回溯法

第10頁5.

算法的復(fù)雜度評(píng)價(jià)一個(gè)算法優(yōu)劣的主要標(biāo)準(zhǔn)是算法的執(zhí)行效率和存儲(chǔ)需求:時(shí)間復(fù)雜度:執(zhí)行這個(gè)算法所需要的計(jì)算工作量一般可以用算法在執(zhí)行過程中所需基本運(yùn)算的執(zhí)行次數(shù)來度量計(jì)算工作量空間復(fù)雜度:執(zhí)行這個(gè)算法所需要的內(nèi)存空間

算法在執(zhí)行過程中臨時(shí)占用的存儲(chǔ)空間

時(shí)間復(fù)雜度它大致等于計(jì)算機(jī)執(zhí)行一種簡(jiǎn)單操作所需的平均時(shí)間與算法中進(jìn)行簡(jiǎn)單操作的次數(shù)的乘積。

一個(gè)算法在計(jì)算機(jī)存儲(chǔ)器上所占用的存儲(chǔ)空間,包括存儲(chǔ)算法本身所占用的存儲(chǔ)空間、算法中的輸入輸出數(shù)據(jù)所占用的存儲(chǔ)空間和算法在運(yùn)行過程中臨時(shí)占用的存儲(chǔ)空間這三個(gè)部分時(shí)間復(fù)雜度用“O(數(shù)量級(jí))”來表示,稱為“階”。常見的時(shí)間復(fù)雜度有:O(1)常數(shù)階;O(log2n)對(duì)數(shù)階;O(n)線性階;O(n2)平方階。第11頁(1)在計(jì)算機(jī)中,算法是指______。

A.查詢方法B.加工方法

C.解題方案的準(zhǔn)確而完整的描述D.排序方法(2)下列敘述中正確的是______。A)算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)無關(guān)B)算法的時(shí)間復(fù)雜度是指執(zhí)行算法所需要的計(jì)算工作量C)數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)是一一對(duì)應(yīng)的D)算法的時(shí)間復(fù)雜度與空間復(fù)雜度一定相關(guān)(3)算法的有窮性是指______。A)算法程序的運(yùn)行時(shí)間是有限的B)算法程序所處理的數(shù)據(jù)量是有限的C)算法程序的長(zhǎng)度是有限的D)算法只能被有限的用戶使用(c)(B)算法習(xí)題:(A)第12頁(4)算法的時(shí)間復(fù)雜度是指______。

A)算法的執(zhí)行時(shí)間

B)算法所處理的數(shù)據(jù)量

C)算法程序中的語句或指令條數(shù)

D)算法在執(zhí)行過程中所需要的基本運(yùn)算次數(shù)(5)算法的空間復(fù)雜度是指

______。A)算法在執(zhí)行過程中所需要的計(jì)算機(jī)存儲(chǔ)空間B)算法所處理的數(shù)據(jù)量C)算法程序中的語句或指令條數(shù)D)算法在執(zhí)行過程中所需要的臨時(shí)工作單元數(shù)(6)下列敘述中正確的是______。

A)一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度也必定大

B)一個(gè)算法的空間復(fù)雜度大,則其時(shí)間復(fù)雜度必定小

C)一個(gè)算法的時(shí)間復(fù)雜度大,則其空間復(fù)雜度必定小

D)上述三種說法都不對(duì)(D)計(jì)算工作量(A)(D)算法的時(shí)間復(fù)雜度是指A)執(zhí)行算法程序所需要的時(shí)間B)算法程序的長(zhǎng)度C)算法執(zhí)行過程中所需要的基本運(yùn)算次數(shù)D)算法程序中的指令條數(shù)算法的基本特征是可行性、確定性、

【1】和擁有足夠的情報(bào)。算法的空間復(fù)雜度是指

A)算法程序的長(zhǎng)度 B)算法程序中的指令條數(shù)

C)算法程序所占的存儲(chǔ)空間D)執(zhí)行過程中所需要的存儲(chǔ)空間在計(jì)算機(jī)中,算法是指

A)加工方法 B)解題方案的準(zhǔn)確而完整的描述

C)排序方法 D)查詢方法例題講解有窮性算法分析的目的是

A)找出數(shù)據(jù)結(jié)構(gòu)的合理性B)找出算法中輸入和輸出之間的關(guān)系

C)分析算法的易懂性和可靠性 D)分析算法的效率以求改進(jìn)算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱為算法的【1】。時(shí)間復(fù)雜度和空間復(fù)雜度第15頁

計(jì)算機(jī)在進(jìn)行數(shù)據(jù)處理時(shí),實(shí)際需要處理的數(shù)據(jù)元素一般有很多,而這些大量的數(shù)據(jù)元素都需要存放在計(jì)算機(jī)中,因此,大量的數(shù)據(jù)元素在計(jì)算機(jī)中如何組織,以便提高數(shù)據(jù)處理的效率,并且節(jié)省計(jì)算機(jī)的存儲(chǔ)空間,這是進(jìn)行數(shù)據(jù)處理的關(guān)鍵問題。二、數(shù)據(jù)結(jié)構(gòu)程序=算法+數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指相互有關(guān)聯(lián)的數(shù)據(jù)元素的集合。

一般來說,人們不會(huì)同時(shí)處理特征完全不同且互相之間沒有任何關(guān)系的各類數(shù)據(jù)元素,對(duì)于具有不同特征的數(shù)據(jù)元素總是分別進(jìn)行處理。一般情況下,在具有相同特征的數(shù)據(jù)元素集合中,各個(gè)數(shù)據(jù)元素之間存在有某種關(guān)系(即聯(lián)系),這種關(guān)系反映了該集合中的數(shù)據(jù)元素所固有的一種結(jié)構(gòu)。超市的物品如何存放才好找且節(jié)省空間呢?第16頁二.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是指相互有關(guān)聯(lián)的數(shù)據(jù)元素的集合。數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)和數(shù)據(jù)之間關(guān)系的一門學(xué)科,它包括三個(gè)方面。

(1)數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);(2)在對(duì)數(shù)據(jù)進(jìn)行處理時(shí),各數(shù)據(jù)元素在計(jì)算機(jī)中的存儲(chǔ)關(guān)系,即數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu);(3)對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算(操作)。第17頁1.邏輯結(jié)構(gòu)

數(shù)據(jù)的邏輯結(jié)構(gòu)是指反映數(shù)據(jù)元素之間邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)包含:(1)表示數(shù)據(jù)元素的信息;(2)表示各數(shù)據(jù)元素之間的前后件關(guān)系。例:1.一年四季的數(shù)據(jù)結(jié)構(gòu)

B=(D,R)D={春,夏,秋,冬}R={(春,夏),(夏,秋),(秋,冬)}2.家庭成員的數(shù)據(jù)結(jié)構(gòu)

B=(D,R)D={父親,兒子,女兒}R={(父親,兒子),(父親,女兒)}春夏秋冬數(shù)據(jù)結(jié)構(gòu)的圖形表示父親兒子女兒第18頁常見的邏輯結(jié)構(gòu)有:線性結(jié)構(gòu)、樹形結(jié)構(gòu)和圖形結(jié)構(gòu)。線性結(jié)構(gòu)樹形結(jié)構(gòu)圖形結(jié)構(gòu)①線性結(jié)構(gòu)結(jié)構(gòu)中的每個(gè)元素之間存在一個(gè)對(duì)一個(gè)的關(guān)系;②樹形結(jié)構(gòu)結(jié)構(gòu)中的每個(gè)元素之間存在一個(gè)對(duì)多個(gè)的關(guān)系;③圖形結(jié)構(gòu)或網(wǎng)狀結(jié)構(gòu)結(jié)構(gòu)中的每個(gè)元素之間存在多個(gè)對(duì)多個(gè)的關(guān)系。其中,樹形結(jié)構(gòu)和圖形結(jié)構(gòu)統(tǒng)稱為非線形結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)可以用二元關(guān)系表示,也可以直觀地用圖形來表示。第19頁2.存儲(chǔ)結(jié)構(gòu)(物理結(jié)構(gòu))計(jì)算機(jī)在實(shí)際進(jìn)行數(shù)據(jù)處理時(shí),被處理的各數(shù)據(jù)元素總是被存放在計(jì)算機(jī)的存儲(chǔ)空間中,并且,各數(shù)據(jù)元素在計(jì)算機(jī)存儲(chǔ)空間中的位置與它們的邏輯關(guān)系不一定是相同的,而且一般也不可能相同。如:一年四季

家庭成員計(jì)算機(jī)存儲(chǔ)空間怎樣存放?

存儲(chǔ)結(jié)構(gòu)指數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)空間中的具體實(shí)現(xiàn)。常見的存儲(chǔ)結(jié)構(gòu)有:順序存儲(chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)索引存儲(chǔ)結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的關(guān)系的結(jié)構(gòu),而不管其存儲(chǔ)方式的數(shù)據(jù)結(jié)構(gòu)稱為邏輯結(jié)構(gòu)。一種數(shù)據(jù)結(jié)構(gòu)可以根據(jù)需要表示成一種或多種存儲(chǔ)結(jié)構(gòu)。第20頁3.數(shù)據(jù)的運(yùn)算檢索插入刪除更新排序

通常,一個(gè)數(shù)據(jù)結(jié)構(gòu)中的元素結(jié)點(diǎn)可能是動(dòng)態(tài)變化的。根據(jù)需要或在處理過程中,可以在一個(gè)數(shù)據(jù)結(jié)構(gòu)中增加一個(gè)新結(jié)點(diǎn)(插入運(yùn)算),也可以刪除某個(gè)結(jié)點(diǎn)(刪除運(yùn)算),除此之外,對(duì)數(shù)據(jù)結(jié)構(gòu)的運(yùn)算還有查找、分類、合并、分解、復(fù)制和修改。在對(duì)數(shù)據(jù)結(jié)構(gòu)的處理過程中,不僅數(shù)據(jù)結(jié)構(gòu)中結(jié)點(diǎn)的個(gè)數(shù)在動(dòng)態(tài)變化,而且,各數(shù)據(jù)元素之間的關(guān)系也有可能在動(dòng)態(tài)地變化。如:無序表變有序表數(shù)據(jù)結(jié)構(gòu)是研究數(shù)據(jù)和數(shù)據(jù)之間關(guān)系的一門學(xué)科,研究以下三方面內(nèi)容:數(shù)據(jù)的邏輯結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)的運(yùn)算父親兒子女兒第21|92頁常見的數(shù)據(jù)結(jié)構(gòu)

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

線性結(jié)構(gòu)與非線性結(jié)構(gòu)兩大類型線性結(jié)構(gòu):一個(gè)非空的數(shù)據(jù)結(jié)構(gòu)若滿足下面的兩個(gè)條件,則這種數(shù)據(jù)結(jié)構(gòu)即為線性結(jié)構(gòu)。①有且僅有一個(gè)根結(jié)點(diǎn);②除第一個(gè)結(jié)點(diǎn)外,每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件;除最后一個(gè)結(jié)點(diǎn)外,每一個(gè)結(jié)點(diǎn)最多有一個(gè)后件。常見的線性結(jié)構(gòu)有:線性表、棧、隊(duì)列、線性鏈表等第22|92頁a1a2a5a3a4HEAD319510線性鏈表的邏輯狀態(tài)常見的非線性結(jié)構(gòu)有樹、二叉樹、圖等非線性結(jié)構(gòu):一個(gè)數(shù)據(jù)結(jié)構(gòu)不是線性結(jié)構(gòu)。第23頁1.線性表(LinearList)

線性表是由n(n≥0)個(gè)數(shù)據(jù)元素

a1,a2,…,ai,…,an組成的一個(gè)有限序列。簡(jiǎn)單的線性表春夏秋冬復(fù)雜的線性表記錄102011001

張三男…

記錄202011003李四女…記錄3記錄4第24頁線性表的順序存儲(chǔ)結(jié)構(gòu)特點(diǎn):

順序存儲(chǔ)結(jié)構(gòu)把邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物理上相鄰的存儲(chǔ)單元里,順序存儲(chǔ)結(jié)構(gòu)只存儲(chǔ)結(jié)點(diǎn)的值,不存儲(chǔ)結(jié)點(diǎn)間的關(guān)系,結(jié)點(diǎn)間的關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來體現(xiàn)?!璦1a2…ai…an…存儲(chǔ)地址200020042000+4*(i-1)2000+4*(n-1)……占4個(gè)字節(jié)Loa(ai)=Loa(a1)+L*(i-1)第i個(gè)數(shù)的地址第一個(gè)數(shù)的地址L為該類型數(shù)所占的字節(jié)線性表的存儲(chǔ)結(jié)構(gòu)線性表的存儲(chǔ)結(jié)構(gòu)有兩種:

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

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

順序表的插入運(yùn)算順序表的刪除運(yùn)算順序表的插入和刪除運(yùn)算

在線性表順序存儲(chǔ)情況下,要插入或刪除一個(gè)元素,都會(huì)由于數(shù)據(jù)元素的移動(dòng)而消耗大量的處理時(shí)間,所以這種存儲(chǔ)方式對(duì)于小線性表或其中數(shù)據(jù)元素不經(jīng)常變動(dòng)的線性表是合適的。線性表的順序存儲(chǔ)結(jié)構(gòu)稱為順序表。第26頁插入運(yùn)算ai-1…..a2a1alength…ai+1aixai-1…..a2a1alength…ai+1aiX

插入算法的分析:

假設(shè)線性表中含有n個(gè)數(shù)據(jù)元素,在進(jìn)行插入操作時(shí),若假定在n+1個(gè)位置上插入元素的可能性均等,則平均移動(dòng)元素的個(gè)數(shù)為:第27頁

刪除運(yùn)算ai-1…..a2a1alength…ai+1aiai-1…..a2a1alength…ai+1刪除算法的分析:

在進(jìn)行刪除操作時(shí),若假定刪除每個(gè)元素的可能性均等,則平均移動(dòng)元素的個(gè)數(shù)為:總結(jié):

順序存儲(chǔ)結(jié)構(gòu)表示的線性表,在做插入或刪除操作時(shí),平均需要移動(dòng)大約一半的數(shù)據(jù)元素。當(dāng)線性表的數(shù)據(jù)元素量較大,并且經(jīng)常要對(duì)其做插入或刪除操作時(shí),這一點(diǎn)需要值得考慮。第28頁線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為線性鏈表。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)不要求邏輯上相鄰的數(shù)據(jù)元素物理位置也相鄰,而且各數(shù)據(jù)元素的存儲(chǔ)順序也是任意的。各數(shù)據(jù)元素的先后關(guān)系是由各結(jié)點(diǎn)的指針域指示。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的每一個(gè)存儲(chǔ)結(jié)點(diǎn)不僅存儲(chǔ)結(jié)點(diǎn)的值,而且存儲(chǔ)結(jié)點(diǎn)之間的關(guān)系:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分為單鏈表、雙向鏈表、循環(huán)鏈表線性鏈表不能隨機(jī)存取數(shù)據(jù)域指針域第29頁設(shè)線性表為(a1,a2,a3,a4,a5)1a2923a1145a4106789a3510a50HEAD3a1a2a5a3a4HEAD319510線性鏈表的邏輯狀態(tài)線性鏈表的物理狀態(tài)1a12a23a34a45a567線性表的順序存儲(chǔ)結(jié)構(gòu)注意:123此類編號(hào)不代表所在的地址單元的地址編碼線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)

及其插入與刪除操作第30頁zhaoqiansunlizhouwuzhengwang/H存儲(chǔ)地址數(shù)據(jù)17131925313743liqiansunwangwuzhaozhengzhou指針43131null377192531頭指針單鏈表第31頁單鏈表的插入運(yùn)算在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)單鏈表刪除運(yùn)算PbaxSbaPLa…aian^…ai-1ai+1要求:刪除結(jié)點(diǎn)ai。第32頁循環(huán)鏈表:

首尾相接的鏈表。將最后一個(gè)結(jié)點(diǎn)的空指針改為指向頭結(jié)點(diǎn),從任一結(jié)點(diǎn)出發(fā)均可找到其它結(jié)點(diǎn)。a1a2an∧a3L…..帶頭結(jié)點(diǎn)的單鏈表a1a2ana3L…..循環(huán)單鏈表特點(diǎn):

可以從任何一個(gè)結(jié)點(diǎn)開始訪問鏈表的所有結(jié)點(diǎn).第33頁雙向鏈表的存儲(chǔ)結(jié)構(gòu)

在每個(gè)結(jié)點(diǎn)中設(shè)置兩個(gè)指針,一個(gè)指向后繼,一個(gè)指向前驅(qū)??芍苯哟_定一個(gè)結(jié)點(diǎn)的前驅(qū)和后繼結(jié)點(diǎn)??商岣咝省EAD31510a2a3a4a1提問:?jiǎn)蜗蜴湵淼娜秉c(diǎn)是什么?提示:如何尋找結(jié)點(diǎn)的直接前趨。

雙向鏈表可以克服單鏈表的單向性的缺點(diǎn)。

在雙向鏈表的結(jié)點(diǎn)中有兩個(gè)指針域,其一指向直接后繼,另一指向直接前趨。雙向循環(huán)鏈表

第34頁線性表的應(yīng)用:應(yīng)用最廣的數(shù)據(jù)結(jié)構(gòu)。.高級(jí)語言中的數(shù)組;·計(jì)算機(jī)的文件系統(tǒng);·計(jì)算機(jī)的目錄系統(tǒng);·電話號(hào)碼查詢系統(tǒng)(可采用順序表或單鏈表結(jié)構(gòu));·各種事務(wù)處理(可采用順序表或單鏈表結(jié)構(gòu));第35頁2.棧和隊(duì)列棧和隊(duì)列是兩種特殊的線性表,它們是運(yùn)算時(shí)要受到某些限制的線性表,故也稱為限定性的數(shù)據(jù)結(jié)構(gòu)。

棧(Stack)及其基本運(yùn)算

隊(duì)列(Queue)及其基本運(yùn)算

循環(huán)隊(duì)列及其基本運(yùn)算第36頁1.棧棧——是一種只允許在表的一端進(jìn)行插入或刪除操作的線性表。棧頂top——允許插入或刪除一端。棧底bottom——不允許插入或刪除一端??諚!缓氐目毡??!璦1a2an棧底棧頂進(jìn)棧出棧棧s=(a1,a2,…,an)后進(jìn)先出或先進(jìn)后出(LIFO)第37頁棧的物理存儲(chǔ)結(jié)構(gòu)可以用順序結(jié)構(gòu),也可以用鏈表結(jié)構(gòu)。下面討論順序存儲(chǔ)結(jié)構(gòu)中棧元素的插入和刪除運(yùn)算。順序棧的進(jìn)棧和出棧運(yùn)算棧的基本運(yùn)算有三種:入棧、退棧和讀棧頂元素

在順序棧中插入和刪除運(yùn)算不需要移動(dòng)表中其他數(shù)據(jù)元素。第38頁2.棧的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算a2a1a1a2top

用順序存儲(chǔ)結(jié)構(gòu)表示的棧:

順序棧用一組連續(xù)的存儲(chǔ)單元存放自棧底到棧頂?shù)臄?shù)據(jù)元素,一般用一維數(shù)組表示,設(shè)置一個(gè)簡(jiǎn)單變量top指示棧頂位置,稱為針棧頂指,它始終指向待插入元素的位置?;具\(yùn)算:壓(進(jìn))棧:PUSH出棧:POP讀棧頂元素:gettop第39頁例子:topbaseEDCBAtopbaseCBAbasetopAbasetop空桟:top=base非空桟:top始終在桟頂元素的后一個(gè)位置桟的元素個(gè)數(shù):top-base上溢下溢第40頁2、隊(duì)列定義:一種特殊的線性結(jié)構(gòu),限定只能在表的一端(隊(duì)尾rear)進(jìn)行插入,在表的另一端(隊(duì)頭front)進(jìn)行刪除的線性表。此種結(jié)構(gòu)稱為先進(jìn)先出(FIFO)表。a1,

a2,

a3,

a4,…………

an-1,

an

隊(duì)列示意圖隊(duì)頭隊(duì)尾先進(jìn)先出后進(jìn)后出(LIFO)第41頁e3e4(c)e1,e2出隊(duì),e4入隊(duì)

隊(duì)滿rear=3fronte1e2e3

(b)rearfront(b)e1,e2,e3入隊(duì)隊(duì)列的順序存儲(chǔ)結(jié)構(gòu)及其基本運(yùn)算

3210(a)rear=front=-1(隊(duì)空)rearfront空隊(duì)列:非空隊(duì)列:隊(duì)列元素個(gè)數(shù):rear=front=-1front始終指向隊(duì)頭元素前一個(gè)位置,而rear始終指向隊(duì)尾元素的位置rear-front第42頁

隊(duì)列的物理存儲(chǔ)結(jié)構(gòu)可以用順序結(jié)構(gòu),也可以用鏈?zhǔn)浇Y(jié)構(gòu)。順序隊(duì)列的運(yùn)算棧有三種操作:入棧\出棧\讀棧頂元素隊(duì)列有三種操作:入隊(duì)\出隊(duì)\讀隊(duì)首元素例:有入棧元素序列:ABCD,求可能的出棧序列.如是隊(duì)列又是什么情況呢?第43頁

循環(huán)隊(duì)列把隊(duì)列的存儲(chǔ)空間在邏輯上看作一個(gè)環(huán),當(dāng)R指向存儲(chǔ)空間的末端后,就把它重新置于始端。循環(huán)隊(duì)列的運(yùn)算隊(duì)列中進(jìn)行插入的一端稱做隊(duì)尾(rear),進(jìn)行刪除的一端稱做隊(duì)首(front)。

第44頁……frontrearMaxsize-101e3e4

rear=3front第45頁0012345frontABCDEFrear上溢0012345frontrear下溢front=rear隊(duì)滿front=rear隊(duì)空第46頁數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)方面的考題

1:數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指()

A)存儲(chǔ)在外存中的數(shù)據(jù)B)數(shù)據(jù)所占的存儲(chǔ)空間量

C)數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D)數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示2.下列敘述中正確的是(

A)棧是“先進(jìn)先出”的線性表

B)隊(duì)列是“先進(jìn)后出”的線性表

C)循環(huán)隊(duì)列是非線性結(jié)構(gòu)

D)有序線性表既可以采用順序存儲(chǔ)結(jié)構(gòu),也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)3.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),帶鏈的隊(duì)列屬于(

)。4.下列數(shù)據(jù)結(jié)構(gòu)中,屬于非線性結(jié)構(gòu)的是(

)A)循環(huán)隊(duì)列B)帶鏈隊(duì)列C)二叉樹D)帶鏈棧答案:D。答案:D。答案:線性結(jié)構(gòu)。答案:c第47頁5。下列敘述中正確的是()。

A)順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)一定是連續(xù)的,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)空間不一定是連續(xù)的

B)順序存儲(chǔ)結(jié)構(gòu)只針對(duì)線性結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)只針對(duì)非線性結(jié)構(gòu)

C)順序存儲(chǔ)結(jié)構(gòu)能存儲(chǔ)有序表,鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)不能存儲(chǔ)有序表

D)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)比順序存儲(chǔ)結(jié)構(gòu)節(jié)省存儲(chǔ)空間答案:A。6。下列關(guān)于棧的敘述正確的是(

A)棧按“先進(jìn)先出”組織數(shù)據(jù)B)棧按“先進(jìn)后出”組織數(shù)據(jù)

C)只能在棧底插入數(shù)據(jù)D)不能刪除數(shù)據(jù)

答案:B。7.一個(gè)隊(duì)列的初始狀態(tài)為空?,F(xiàn)將元素A,B,C,D,E,F(xiàn),5,4,3,2,1依次入隊(duì),然后再依次退隊(duì),則元素退隊(duì)的順序?yàn)椋?/p>

。答案:A,B,C,D,E,F(xiàn),5,4,3,2,1第48頁9.設(shè)某循環(huán)隊(duì)列的容量為50,如果頭指針front=45(指向隊(duì)頭元素的前一位置),尾指針rear=10(指向隊(duì)尾元素),則該循環(huán)隊(duì)列中共有【2】個(gè)元素。

(2010年3月)

8。假設(shè)用一個(gè)長(zhǎng)度為50的數(shù)組(數(shù)組元索的下標(biāo)從0到49)作為棧的存儲(chǔ)空間,棧底指針bottom指向棧底元素,棧頂指針top指向棧頂元素,如果bottom=49,top=30(數(shù)組下標(biāo)),則棧中具有【】個(gè)元素。答案:19答案:1546-50-1-10鏈表不具有的特點(diǎn)是A)不必事先估計(jì)存儲(chǔ)空間B)可隨機(jī)訪問任一元素C)插入刪除不需要移動(dòng)元素 D)所需空間與線性表長(zhǎng)度成正比數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【1】

。數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的

A)存儲(chǔ)結(jié)構(gòu) B)物理結(jié)構(gòu)

C)邏輯結(jié)構(gòu) D)物理和存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和【1】

兩大類。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指A)數(shù)據(jù)所占的存儲(chǔ)空間B)數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示C)數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D)存儲(chǔ)在外存中的數(shù)據(jù)例題講解存儲(chǔ)結(jié)構(gòu)非線性結(jié)構(gòu)順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置

【2】的存儲(chǔ)單元中。

數(shù)據(jù)處理的最小單位是

A)數(shù)據(jù) B)數(shù)據(jù)元素C)數(shù)據(jù)項(xiàng) D)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)作為計(jì)算機(jī)的一門學(xué)科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對(duì)各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行的運(yùn)算,以及

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu) B)計(jì)算方法C)數(shù)據(jù)映象D)邏輯存儲(chǔ)線性表的順序存儲(chǔ)結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分別是

A)順序存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

B)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

C)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)

D)任意存取的存儲(chǔ)結(jié)構(gòu)、任意存取的存儲(chǔ)結(jié)構(gòu)

相鄰根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分成

A)動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)

C)線性結(jié)構(gòu)和非線性結(jié)構(gòu)D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的

【2】以及對(duì)數(shù)據(jù)的操作運(yùn)算。數(shù)據(jù)的基本單位是

【5】。下列敘述中,錯(cuò)誤的是

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)

B)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)

C)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)在計(jì)算機(jī)中所占的空間不一定是連續(xù)的

D)一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu)存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)元素鏈表不具有的特點(diǎn)是A)不必事先估計(jì)存儲(chǔ)空間B)可隨機(jī)訪問任一元素C)插入刪除不需要移動(dòng)元素 D)所需空間與線性表長(zhǎng)度成正比順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置

【2】的存儲(chǔ)單元中。長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【1】

。線性表若采用順序存儲(chǔ)結(jié)構(gòu)時(shí),要求內(nèi)存中可用存儲(chǔ)單元的地址

A)必須是連續(xù)的 B)部分地址必須是連續(xù)的

C)一定是不連續(xù)的D)連續(xù)不連續(xù)都可以例題講解相鄰線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是

A)每個(gè)元素都有一個(gè)直接前件和直接后件

B)線性表中至少要有一個(gè)元素

C)表中諸元素的排列順序必須是由小到大或由大到小

D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件線性表的順序存儲(chǔ)結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分別是

A)順序存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

B)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)

C)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)

D)任意存取的存儲(chǔ)結(jié)構(gòu)、任意存取的存儲(chǔ)結(jié)構(gòu)下列敘述中,錯(cuò)誤的是

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)處理的效率密切相關(guān)

B)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)與數(shù)據(jù)處理的效率無關(guān)

C)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)在計(jì)算機(jī)中所占的空間不一定是連續(xù)的

D)一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu)

根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分成

A)動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu) B)緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)

C)線性結(jié)構(gòu)和非線性結(jié)構(gòu)D)內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)當(dāng)線性表采用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)時(shí),其主要特點(diǎn)是【1】

。隨機(jī)存取鏈表不具有的特點(diǎn)是A)不必事先估計(jì)存儲(chǔ)空間B)可隨機(jī)訪問任一元素C)插入刪除不需要移動(dòng)元素D)所需空間與線性表長(zhǎng)度成正比用鏈表表示線性表的優(yōu)點(diǎn)是A)便于隨機(jī)存取B)花費(fèi)的存儲(chǔ)空間較順序存儲(chǔ)少C)便于插入和刪除操作D)數(shù)據(jù)元素的物理順序與邏輯順序相同長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【1】

。在單鏈表中,增加頭結(jié)點(diǎn)的目的是

A)方便運(yùn)算的實(shí)現(xiàn)B)使單鏈表至少有一個(gè)結(jié)點(diǎn)

C)標(biāo)識(shí)表結(jié)點(diǎn)中首結(jié)點(diǎn)的位置

D)說明單鏈表是線性表的鏈?zhǔn)酱鎯?chǔ)實(shí)現(xiàn)例題講解非空的循環(huán)單鏈表head的尾結(jié)點(diǎn)(由p所指向),滿足

A)p->next==NULL B)p==NULLC)p->next=head D)p=head循環(huán)鏈表的主要優(yōu)點(diǎn)是

A)不再需要頭指針了

B)從表中任一結(jié)點(diǎn)出發(fā)都能訪問到整個(gè)鏈表

C)在進(jìn)行插入、刪除運(yùn)算時(shí),能更好的保證鏈表不斷開

D)已知某個(gè)結(jié)點(diǎn)的位置后,能夠容易的找到它的直接前件當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【2】。用鏈表表示線性表的突出優(yōu)點(diǎn)是【1】。上溢插入、刪除靈活棧和隊(duì)列的共同特點(diǎn)是

A)都是先進(jìn)先出B)都是先進(jìn)后出

C)只允許在端點(diǎn)處插入和刪除元素D)沒有共同點(diǎn)如果進(jìn)棧序列為e1,e2,e3,e4,則可能的出棧序列是

A)e3,e1,e4,e2 B)e2,e4,e3,e1C)e3,e4,e1,e2 D)任意順序一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調(diào)用。而實(shí)現(xiàn)遞歸調(diào)用中的存儲(chǔ)分配通常用

A)棧 B)堆C)數(shù)組 D)鏈表例題講解棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A)ABCED B)DCBEAC)DBCEA D)CDABE棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是

A)線性存儲(chǔ)結(jié)構(gòu)和鏈表存儲(chǔ)結(jié)構(gòu) B)散列方式和索引方式

C)鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組D)線性存儲(chǔ)結(jié)構(gòu)和非線性存儲(chǔ)結(jié)構(gòu)棧和隊(duì)列通常采用的存儲(chǔ)結(jié)構(gòu)是【1】

。下列數(shù)據(jù)結(jié)構(gòu)中,按先進(jìn)后出原則組織數(shù)據(jù)的是

A)線性鏈表B)棧C)循環(huán)鏈表 D)順序表▽當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為

【2】。鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組上溢由兩個(gè)棧共享一個(gè)存儲(chǔ)空間的好處是A)減少存取時(shí)間,降低下溢發(fā)生的機(jī)率B)節(jié)省存儲(chǔ)空間,降低上溢發(fā)生的機(jī)率C)減少存取時(shí)間,降低上溢發(fā)生的機(jī)率D)節(jié)省存儲(chǔ)空間,降低下溢發(fā)生的機(jī)率下列關(guān)于棧的敘述中正確的是A)在棧中只能插入數(shù)據(jù)B)在棧中只能刪除數(shù)據(jù)C)棧是先進(jìn)先出的線性表D)棧是后進(jìn)先出的線性表下列關(guān)于隊(duì)列的敘述中正確的是A)在隊(duì)列中只能插入數(shù)據(jù)B)在隊(duì)列中只能刪除數(shù)據(jù)C)隊(duì)列是先進(jìn)先出的線性表D)隊(duì)列是后進(jìn)先出的線性表第60頁樹型結(jié)構(gòu)是一種重要的非線性結(jié)構(gòu)。

樹的概念

二叉樹的概念

二叉樹的存儲(chǔ)

二叉樹的遍歷3.樹與二叉樹第61頁樹的概念

樹的定義:是一種簡(jiǎn)單的非線性結(jié)構(gòu)。n個(gè)結(jié)點(diǎn)的有限集。(n>=0)

ABDFECGHIJKM結(jié)點(diǎn):根結(jié)點(diǎn):沒有前件的結(jié)點(diǎn)只有一個(gè)稱為根結(jié)點(diǎn)。簡(jiǎn)稱樹的根??諛洌簾o結(jié)點(diǎn)則稱為空樹;

父結(jié)點(diǎn):結(jié)點(diǎn)的前件稱該結(jié)點(diǎn)的父結(jié)點(diǎn)。A只有一個(gè)結(jié)點(diǎn)的樹第62頁樹型結(jié)構(gòu)的常用術(shù)語ABDFECGHIJKM子結(jié)點(diǎn):結(jié)點(diǎn)的后件,稱為該結(jié)點(diǎn)的子結(jié)點(diǎn)??梢杂卸鄠€(gè)。葉子結(jié)點(diǎn)沒有后件的結(jié)點(diǎn);

Q:圖中葉子結(jié)點(diǎn)有幾個(gè)?7結(jié)點(diǎn)的度一個(gè)結(jié)點(diǎn)的子樹的個(gè)數(shù);(有幾個(gè)分叉)Q:結(jié)點(diǎn)A、G的度數(shù)?3,2.Q:度數(shù)為0、1、2、3的結(jié)點(diǎn)分別有幾個(gè)?

樹的度樹中所有結(jié)點(diǎn)度的最大值;Q:右圖中樹的度?3第63頁樹型結(jié)構(gòu)的常用術(shù)語ABDFECGHIJKM

結(jié)點(diǎn)的層次樹中根結(jié)點(diǎn)的層次為1,根結(jié)點(diǎn)子樹的根為第2層,以此類推;

Q:圖中結(jié)點(diǎn)F的層次?

樹的深度

樹中所有結(jié)點(diǎn)層次的最大值;

Q:圖中樹的深度?

有序樹、無序樹如果樹中每棵子樹從左向右的排列擁有一定的順序,不得互換,則稱為有序樹,否則稱為無序樹。①②③④第64頁二叉樹的概念

定義:二叉樹是一種有序的樹形結(jié)構(gòu)。它與一般樹形結(jié)構(gòu)的區(qū)別是:每個(gè)結(jié)點(diǎn)最多有兩棵子樹;子樹有左右之分,次序不能任意顛倒。稱左子樹和右子樹

二叉樹的5種基本形態(tài)第65頁★樹與二叉樹的區(qū)別A.樹和二叉樹的結(jié)點(diǎn)個(gè)數(shù)最少都可為0。B.樹中結(jié)點(diǎn)的最大度數(shù)沒有限制,二叉樹結(jié)點(diǎn)最大度數(shù)為2。C.樹的結(jié)點(diǎn)無左、右之分,二叉樹的結(jié)點(diǎn)子樹有明確的左、右之分。3個(gè)結(jié)點(diǎn)的樹3個(gè)結(jié)點(diǎn)的二叉樹第66頁二叉樹的性質(zhì)【性質(zhì)1】

在二叉樹的第k層上最多有2k-1個(gè)結(jié)點(diǎn)(k≥1)ABCDFEHG121314158910114567123第67頁【性質(zhì)2】深度為m的二叉樹最多有2m-1個(gè)結(jié)點(diǎn)(m≥1)ABCDFEHG121314158910114567123第68頁【性質(zhì)3】二叉樹上葉子結(jié)點(diǎn)數(shù)比度為2的結(jié)點(diǎn)數(shù)多1ABCDFEHG度為2的結(jié)點(diǎn)葉子結(jié)點(diǎn)第69頁【性質(zhì)4】具有n個(gè)結(jié)點(diǎn)的二叉樹的深度最少為

log2n

+1),其中,log2n

的結(jié)果是不大于log2n的最大整數(shù)121314158910114567123深度為4的滿二叉樹深度為4的完全二叉樹84567123深度為3的完全二叉樹具有4~7個(gè)結(jié)點(diǎn)深度為4的完全二叉樹具有8~15深度為5的完全二叉樹具有15~31log2(8+1)=ln9/In2=4log2(15+1)=In16/In2=4深度為6的完全二叉樹具有32~63深度為7的完全二叉樹具有64~127深度為8的完全二叉樹具有128~255深度為9的完全二叉樹具有256~511深度為10的完全二叉樹具有512~1023深度為11的完全二叉樹具有1024~2047第70頁滿二叉樹和完全二叉樹滿二叉樹:除最后一層外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)。最后一層的結(jié)點(diǎn)均為0度。完全二叉樹:除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值,在最后一層上只缺少右邊的若干結(jié)點(diǎn)。則稱這棵二叉樹為完全二叉樹。完全二叉樹中度數(shù)為1的結(jié)點(diǎn)的個(gè)數(shù)為0或1。第71頁121314158910114567123滿二叉樹完全二叉樹12138910114567123

完全二叉樹是滿二叉樹滿二叉樹也是完全二叉樹第72頁1213891011456123非完全二叉樹深度為4的完全二叉樹84567123第73頁性質(zhì)5:如果對(duì)一棵有n個(gè)結(jié)點(diǎn)的完全二叉樹的結(jié)點(diǎn)按層序編號(hào),則對(duì)任一結(jié)點(diǎn)i(1=<i=<n)有:

(1)如果i=1,則結(jié)點(diǎn)i是二叉樹的根,無雙親;

如果i>1,則雙親Parent(i)是結(jié)點(diǎn)|i/2|。

(2)如果2i<=n,則編號(hào)i的左子結(jié)點(diǎn)為2i,否則無左子結(jié)點(diǎn),顯然也就沒有右子結(jié)點(diǎn)。

(3)如果2i+1<=n,則編號(hào)i的右子結(jié)點(diǎn)2i+1,否則該結(jié)點(diǎn)無右子結(jié)點(diǎn)。

總之:如

i>1它的雙親是i/2取整,左子結(jié)點(diǎn)是2*i,右子結(jié)點(diǎn)是2*i+1.當(dāng)然如果算下來超過總數(shù)民N,則為沒有。第74頁例:112345678910121i=6其雙親為|i/2|=3;其左子結(jié)點(diǎn)為2*i=12;i=1是樹的根,無雙親;其左子結(jié)點(diǎn)為2*i=2,右子結(jié)點(diǎn)為2*i+1=3.∵2*i=18>122*i+1=19>12∴其無左、右子結(jié)點(diǎn)。∵2*i+1=13>12∴其無右子結(jié)點(diǎn)。i=9其雙親為|i/2|=

4

;第75頁1:在深度為7的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為

A)32

B)31

C)64

D)632:在深度為7的滿二叉樹中,度為2的結(jié)點(diǎn)個(gè)數(shù)為【】

。3:一棵二叉樹中共有70個(gè)葉子結(jié)點(diǎn)與80個(gè)度為1的結(jié)點(diǎn),則該二叉樹中的總結(jié)點(diǎn)數(shù)為

A)219B)221C)229D)2314:某二叉樹中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹中有【】個(gè)葉子結(jié)點(diǎn)。5:一棵二叉樹第六層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)數(shù)最多為【】個(gè)。(樹型結(jié)構(gòu)方面的考題

1答案:C。3答案:A。5答案:32。2答案:63。4答案:19。第76頁二叉樹的存儲(chǔ)

在計(jì)算機(jī)中,二叉樹通常采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。對(duì)于滿二叉樹和完全二叉樹可以按層進(jìn)行順序存儲(chǔ)。LlinkinfoRlink二叉樹的存儲(chǔ)結(jié)點(diǎn)的結(jié)構(gòu)ABDCFGEA∧G∧∧E∧∧F∧B∧C∧

Dt第77頁2、二叉樹的存儲(chǔ)結(jié)構(gòu)

(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)T[16]若父結(jié)點(diǎn)在數(shù)組中i下標(biāo)處,其左孩子在2*i處,右孩子在2*i+1處。11ABcFED

●●●●●●●●●124

8

910563712131415(1)順序存儲(chǔ)結(jié)構(gòu)(1)順序存儲(chǔ)結(jié)構(gòu)2h-1=24-1=15用一組連續(xù)的存儲(chǔ)單元存放二叉樹的數(shù)據(jù)元素。結(jié)點(diǎn)在數(shù)組中的相對(duì)位置蘊(yùn)含著結(jié)點(diǎn)之間的關(guān)系。0000FE000DC0BA15141312111098765432100一般二叉樹必須按完全二叉樹的形式存儲(chǔ),將造成存儲(chǔ)的浪費(fèi)。第78頁(2)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)二叉鏈表三叉鏈表二叉鏈表:二叉鏈表的結(jié)點(diǎn)包含三個(gè)域:數(shù)據(jù)域、左、右指針域。例:ABCDEFGA^B^C^D^E^F^^G^第79頁三叉鏈表:三叉鏈表的結(jié)點(diǎn)包含四個(gè)域:數(shù)據(jù)域、左、右、雙親指針域。例:ABCDEFGA^^B^C^D^E^F^^G^鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn):(1)操作便于實(shí)現(xiàn)(2)結(jié)構(gòu)復(fù)雜第80頁二叉樹的遍歷

遍歷指不重復(fù)地訪問二叉樹中的所有結(jié)點(diǎn)。二叉樹的遍歷的次序與樹型結(jié)構(gòu)上的大多數(shù)運(yùn)算有聯(lián)系。遍歷的方式有三種(1)前序遍歷(DLR)(2)中序遍歷(LDR)(3)后序遍歷(LRD)ABCDFEHG第81頁二叉樹的遍歷

遍歷指不重復(fù)地訪問二叉樹中的所有結(jié)點(diǎn)。(1)先(前)序遍歷(DLR)根左右若二叉樹為空,則結(jié)束遍歷操作;否則訪問根結(jié)點(diǎn);先序遍歷左子樹;先序遍歷右子樹。ABCDFEHG先序遍歷的結(jié)果:

ABECFGHD第82頁(2)中序遍歷(LDR)左根右若二叉樹為空,則結(jié)束遍歷操作;否則中序遍歷左子樹;訪問根結(jié)點(diǎn);中序遍歷右子樹。中序遍歷的結(jié)果:EBAFHGCD(3)后序遍歷(LRD)右根左若二叉樹為空,則結(jié)束遍歷操作;否則后序遍歷左子樹;后序遍歷右子樹;訪問根結(jié)點(diǎn)。后序遍歷的結(jié)果:E

BHGFDCAABCDFEHG第83頁先序序列:ABDGCEFH 中序序列:DGBAECHF 后序序列:GDBEHFCAABCFHDEG下圖所示的二叉樹經(jīng)過三種遍歷得到的順序分別為?練習(xí):根據(jù)先序遍歷序列,建立二叉樹第84頁1:設(shè)二叉樹如下:

對(duì)該二叉樹進(jìn)行后序遍歷的結(jié)果為【3】

樹型結(jié)構(gòu)方面的考題22:對(duì)如下二叉樹進(jìn)行后序遍歷的結(jié)果為A)ABCDEF

B)DBEAFCC)ABDECF

D)DEBFCA

EDBGHFCA

DABCFHDGE已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A)acbedB)decabC)deabc D)cedba

已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為

A)GEDHFBCA B)DGEBHFCAC)ABCDEFGH D)ACBFEDHG樹是結(jié)點(diǎn)的集合,它的根結(jié)點(diǎn)數(shù)目是

A)有且只有1 B)1或多于1C)0或1 D)至少2下列敘述中正確的是

A)線性表是線性結(jié)構(gòu) B)棧與隊(duì)列是非線性結(jié)構(gòu)

C)線性鏈表是非線性結(jié)構(gòu) D)二叉樹是線性結(jié)構(gòu)例題講解在深度為5的滿二叉樹中,葉子結(jié)點(diǎn)的個(gè)數(shù)為

A)32 B)31C)16 D)15若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點(diǎn)訪問順序是

A)bdgcefhaB)gdbecfhaC)bdgaechfD)gdbehfca在樹結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有【1】。具有3個(gè)結(jié)點(diǎn)的二叉樹有

A)2種形態(tài)B)4種形態(tài)C)7種形態(tài)D)5種形態(tài)設(shè)一棵二叉樹中有3個(gè)葉子結(jié)點(diǎn),有8個(gè)度為1的結(jié)點(diǎn),則該二叉樹中總的結(jié)點(diǎn)數(shù)為

A)12 B)13C)14 D)15雙親結(jié)點(diǎn)設(shè)有下列二叉樹:

對(duì)此二叉樹前序遍歷的結(jié)果為A)ZBTTCPXAB)ATBZXCTPC)ZBTACTXPD)ATBZXCPT設(shè)有下列二叉樹:對(duì)此二叉樹的中序遍歷的結(jié)果為A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA設(shè)樹T的度為4,其中度為1、2、3、4的結(jié)點(diǎn)個(gè)數(shù)分別為4、2、1、1。則T中的葉子結(jié)點(diǎn)數(shù)為A)8B)7C)6D)5設(shè)一棵完全二叉樹共有700個(gè)結(jié)點(diǎn),則該二叉樹中有()個(gè)葉子結(jié)點(diǎn)。

在一個(gè)容量為15的循環(huán)隊(duì)列中,若頭指針front=6,尾指針rear=9,則該循環(huán)隊(duì)列中共有()個(gè)元素。設(shè)一棵二叉樹的中序遍歷結(jié)果為DBEAFC,前序遍歷結(jié)果為ABDECF,則后序遍歷結(jié)果為()。3503DEBFCA第89頁⒌查找技術(shù)

查找是數(shù)據(jù)處理的重要內(nèi)容。查找指在一個(gè)給定的數(shù)據(jù)結(jié)構(gòu)中查找指定的元素,該元素也稱關(guān)鍵字。若找到了滿足條件的結(jié)點(diǎn),稱查找成功;否則稱查找失敗。衡量一個(gè)查找算法的主要標(biāo)準(zhǔn)是查找過程中對(duì)關(guān)鍵字進(jìn)行的平均比較次數(shù)。通常根據(jù)不同的數(shù)據(jù)結(jié)構(gòu),采用不同的查找方法:

順序查找

二分查找第90頁1.7.1.1順序查找(線性查找)◆查找過程:對(duì)給定的一關(guān)鍵字K,從線性表的一端開始,逐個(gè)進(jìn)行記錄的關(guān)鍵字和K的比較,直到找到關(guān)鍵字等于K的記錄或到達(dá)表的另一端。◆可以采用從前向后查,也可采用從后向前查的方法?!粼谄骄闆r下,大約要與表中一半以上元素進(jìn)行比較,效率較低。平均查找長(zhǎng)度較大。最好情況:1最壞情況:n◆在下面兩種情況下只能采取順序查找:

a.線性表為無序表(元素排列是無序的);

b.即使是有序線性表,但采用的是鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。第91頁1.7.1.2折半查找(二分法查找)思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認(rèn)找不到該記錄為止。前提:必須在具有順序存儲(chǔ)結(jié)構(gòu)的有序表中進(jìn)行。分三種情況:

1)若中間項(xiàng)的值等于x,則說明已查到。

2)若x小于中間項(xiàng)的值,則在線性表的前半部分查找;

3)若x大于中間項(xiàng)的值,則在線性表的后半部分查找。特點(diǎn):比順序查找方法效率高。最壞的情況下,需要比較log2n次。第92|92頁折半查找算法舉例對(duì)給定數(shù)列(有序){3,5,11,17,21,23,28,30,32,50},按折半查找算法,查找關(guān)鍵字值為30的數(shù)據(jù)元素。

a1

a2

a3

a4

a5

a6

a7

a8

a9

a10

第1次:{3,5,11,17,21,23,28,30,32,50}

K=30mid1=(1+10)/2=5

k>a(mid1)=a(5)=21

第2次:{23,28,30,32,50}mid2=(6+10)/2=8K=a(mid2)=a(8)=30lowhighmidlowhighmid第93|92頁練習(xí)

假設(shè)待查有序(升序)順序表中數(shù)據(jù)元素的關(guān)鍵字序列為(8,18,27,42,47,50,56,68,95,120),用折半查找方法查找關(guān)鍵字值為27的數(shù)據(jù)元素.對(duì)于長(zhǎng)度為n的有序線性表,最壞情況只需比較log2n次。

第94頁1.7.2排序1.7.2.1概述

1、排序的功能:

將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排成一個(gè)按關(guān)鍵字有序的序列。

2、排序過程的組成步驟:首先比較兩個(gè)關(guān)鍵字的大??;然后將記錄從一個(gè)位置移動(dòng)到另一個(gè)位置。第95頁排序方法插入排序選擇排序交換排序歸并排序簡(jiǎn)單插入排序希爾排序簡(jiǎn)單選擇排序堆排序起泡排序快速排序第96頁1.7.2.2插入排序

簡(jiǎn)單插入、希爾排序1、簡(jiǎn)單插入排序:

基本思想:從數(shù)組的第2號(hào)元素開始,順序從數(shù)組中取出元素,并將該元素插入到其左端已排好序的數(shù)組的適當(dāng)位置上。第97頁該算法適合于n較小的情況,時(shí)間復(fù)雜度為O(n2).待排元素序列:[53]2736156942第一次排序:[2753]36156942第二次排序:[273653]156942第三次排序:[15273653]6942第四次排序:[1527365369]42第五次排序:[152736425369]

直接插入排序示例對(duì)于有n個(gè)數(shù)據(jù)元素的待排序列,插入操作要進(jìn)行n-1趟最壞情況下:需要n(n-1)/2次比較最好:

n-1次比較第98頁希爾排序:希爾排序的基本思想:

先將整個(gè)待排記錄序列分割成為若干子序列分別進(jìn)行直接插入排序,待整個(gè)序列中的記錄“基本有序”時(shí),再對(duì)全體記錄進(jìn)行一次直接插入排序.最壞情況下:需要O(n1.5)次比較第99頁

1、簡(jiǎn)單選擇排序思想:首先從1~n個(gè)元素中選出關(guān)鍵字最小的記錄交換到第一個(gè)位置上。然后再從第2個(gè)到第n個(gè)元素中選出次小的記錄交換到第二個(gè)位置上,依次類推。1.7.2.3選擇排序

簡(jiǎn)單選擇排序、堆排序簡(jiǎn)單選擇排序法,

最壞情況需要n(n-1)/2次比較;

時(shí)間復(fù)雜度為O(n2),適用于待排序元素較少的情況。第100|92頁初態(tài):[15,14,22,30,37,15,11]第一趟:[11][14,22,30,37,15,15]第二趟:[11,14][22,30,37,15,15]第三趟:[11,14,15][30,37,22,15]第四趟:[11,14,15,15][37,22,30]第五趟:[11,14,15,15,22][37,30]第六趟:[11,14,15,15,22,30][37]

有序序列例:設(shè)待排數(shù)據(jù)元素的關(guān)鍵字為(15,14,22,30,37,11),每一趟排序后的序列狀態(tài)如圖所示:第101頁

2、堆排序(也是一種選擇排序)堆是具有特定條件的順序存儲(chǔ)的完全二叉樹,其特定條件是:任何一個(gè)非葉子結(jié)點(diǎn)的關(guān)鍵字大于等于(或小于等于)子女的關(guān)鍵字的值。897624331510112536497856(a):堆頂元素取最大值(b):堆頂元素取最小值堆排序需要比較的次數(shù)為O(nlog2n)

(1)堆的示例

第102頁1.7.2.4交換排序交換排序的特點(diǎn)在于交換。有冒泡和快速排序兩種。1、冒泡排序(起泡排序)思想:小的浮起,大的沉底。從左端開始比較。第一趟:第1個(gè)與第2個(gè)比較,大則交換;第2個(gè)與第3個(gè)比較,大則交換,……關(guān)鍵字最大的記錄交換到最后一個(gè)位置上;第二趟:對(duì)前n-1個(gè)記錄進(jìn)行同樣的操作,關(guān)鍵字次大的記錄交換到第n-1個(gè)位置上;依次類推,則完成排序。第103頁冒泡排序

冒泡排序的方法:掃描整個(gè)線性表,逐次對(duì)相鄰的兩個(gè)元素進(jìn)行比較,若為逆序,則交換;第一趟掃描的結(jié)果使最大(或最小)的元素排到表的最后(或最前)

;除最后(或最前)一個(gè)元素,對(duì)剩余的元素重復(fù)上述過程,將次大(或次小)的數(shù)排到表的倒數(shù)(或正數(shù))第二個(gè)位置;重復(fù)上述過程;對(duì)于長(zhǎng)度為n的線性表,冒泡排序需要對(duì)表掃描n-1遍。

第104頁冒泡排序的方法設(shè)待排數(shù)據(jù)元素的關(guān)鍵字為(18,20,15,32,4,25),第一趟冒泡排序后的序列狀態(tài)如圖所示:

182015324251820153242518152032425181520324251815204322518152042532最大數(shù)第二趟冒泡排序第105頁Q:第二趟冒泡排序后的結(jié)果是什么樣的?達(dá)到了最終的排序目標(biāo)嗎?一共需要多少次能夠最后成為有序序列?Q:你覺得冒泡排序的效率如何?如果是你,你會(huì)用什么方法來排序?

冒泡排序比較簡(jiǎn)單,當(dāng)初始序列基本有序時(shí),冒泡排序有較高的效率,反之效率較低。冒泡排序終止條件:

本趟排序未發(fā)生交換,終止排序算法第106頁初始第一趟第二趟第三趟第四趟第五趟序列排序后排序后排序后排序后排序后 26 18 18

18

189 18 26 26

26 915 32 32

329 15 18 54 47 915 26 47 9 1532

9 15 47

15 54

設(shè)待排數(shù)據(jù)元素的關(guān)鍵字為(26,18,32,54,47,9,15)冒泡排序法,需要比較的次數(shù)為n(n-1)/2;

第107頁2、快速排序(對(duì)冒泡排序的改進(jìn))思想:通過一趟排序?qū)⒋判蛄蟹殖蓛刹糠?,使其中一部分記錄的關(guān)鍵字均比另一部分小,再分別對(duì)這兩部分排序,以達(dá)到整個(gè)序列有序。時(shí)間復(fù)雜度:O(log2n)當(dāng)待排序列逆序時(shí),蛻變成冒泡排序,時(shí)間復(fù)雜度:O(n(n-1)/2)第108頁1.7.2.5內(nèi)部排序方法的選擇各種排序方法各有優(yōu)缺點(diǎn),故在不同情況下可作不同的選擇。通常需考慮的因素有:待排序的記錄個(gè)數(shù);記錄本身的大??;記錄的鍵值分布情況等。若待排序的記錄個(gè)數(shù)n較小時(shí),可采用簡(jiǎn)單排序方法。若n較大時(shí),應(yīng)采用快速排序或堆排序。若待排序的記錄已基本有序,可采用簡(jiǎn)單插入和起泡排序。第109頁方法歸并排序簡(jiǎn)單插入希爾排序簡(jiǎn)單選擇堆排序起泡排序快速排序插入選擇交換比較次數(shù)使用建議查找:方法順序折半比較次數(shù)log2n最好:1最壞:n平均:(n+1)/2使用條件順序存儲(chǔ)結(jié)構(gòu)的有序表任何表排序:n-1n(n-1)/2n1.5n(n-1)/2nlog2nn-1n(n-1)/2log2nn(n-1)/2正序的表、n小的表與表的初始數(shù)據(jù)無關(guān)、n小的表正序的表、n小的表n大的表,但逆序的表會(huì)蛻變?yōu)槠鹋菖判蚪柚o助空間最多的方法n大的表第110|92頁排序法小結(jié):簡(jiǎn)單選擇排序法,

最壞情況需要n(n-1)/2次比較;冒泡排序法,

最壞情況需要n(n-1)/2次比較;希爾排序法,

最壞情況需要O(n1.5)次比較;堆排序法,最壞情況需要O(nlog2n)次比較;

第111|92頁排序查找方面的考題:(1)對(duì)于長(zhǎng)度為n的線性表,在最壞情況下,下列各排序法所對(duì)應(yīng)的比較次數(shù)中正確的是()

A)冒泡排序?yàn)閚/2B)冒泡排序?yàn)閚

C)快速排序?yàn)閚D)快速排序?yàn)閚(n-1)/2

(2)在長(zhǎng)為64的有序線性表中進(jìn)行順序查找,最壞情況下需要比較的次數(shù)為______。A)63B)

64C)

6D)

7(3)下列數(shù)據(jù)結(jié)構(gòu)中,能用二分法進(jìn)行查找的是(

A)順序存儲(chǔ)的有序線性表 B)線性鏈表

C)二叉鏈表 D)有序線性鏈表(4)下列排序方法中,最壞情況下比較次數(shù)最少的是(

A)冒泡排序

B)簡(jiǎn)單選擇排序

C)直接插入排序

D)堆排序DBAD第112頁在長(zhǎng)度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為

【2】。長(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【1】

。假設(shè)線性表的長(zhǎng)度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為

A)log2n B)n2C)O(n1..5) D)n(n-1)/2已知數(shù)據(jù)表A中每個(gè)元素距其最終位置不遠(yuǎn),為節(jié)省時(shí)間,應(yīng)采用的算法是

A)堆排序B)直接插入排序C)快速排序D)直接選擇排序例題講解log2nn/2第113頁

冒泡排序算法在最好的情況下的元素交換次數(shù)為【1】

。在最壞情況下,堆排序需要比較的次數(shù)為

【2】。最簡(jiǎn)單的交換排序方法是

A)快速排序 B)選擇排序C)堆排序 D)冒泡排序排序是計(jì)算機(jī)程序設(shè)計(jì)中的一種重要操作,常見的排序方法有插入排序、【1】

和選擇排序等。0nlog2n交換排序第114頁在下列幾種排序方法中,要求內(nèi)存量最大的是

A)插入排序B)選擇排序C)快速排序 D)歸并排序在待排序的元素序列基本有序的前提下,效率最高的排序方法是

A)冒泡排序B)選擇排序C)快速排序D)歸并排序

希爾排序?qū)儆?/p>

A)交換排序B)歸并排序C)選擇排序 D)插入排序?qū)﹂L(zhǎng)度為n的線性表進(jìn)行順序查找,在最壞的情況下所需要的比較次數(shù)為A)n+1B)nC)(n+1)/2D)n/2第115頁2.程序設(shè)計(jì)基礎(chǔ)第116頁第二章程序設(shè)計(jì)基礎(chǔ)內(nèi)容:

1.程序設(shè)計(jì)方法與風(fēng)格。2.結(jié)構(gòu)化程序設(shè)計(jì)。3.面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,對(duì)象,方法,屬性及繼承與多態(tài)性。第117頁1.源程序的文檔化符號(hào)的命名:見名知意注釋(序言性和功能性注釋)程序的視覺組織:空格、空行、縮進(jìn)。。。。2.數(shù)據(jù)說明數(shù)據(jù)說明的次序應(yīng)該規(guī)范化變量安排有序化對(duì)復(fù)雜數(shù)據(jù)結(jié)構(gòu)應(yīng)注釋說明3.語句的結(jié)構(gòu)每條語句簡(jiǎn)單明了盡量不用或少用GOTO語句盡量只采用3種基本控制結(jié)構(gòu)編程4.輸入和輸出對(duì)所有輸入數(shù)據(jù)進(jìn)行校驗(yàn)和合理性檢查輸入輸出格式保持一致設(shè)計(jì)良好的輸出報(bào)表清晰第一,效率第二2.1.2程序設(shè)計(jì)風(fēng)格程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)(面向過程的程序設(shè)計(jì))面向?qū)ο蟮某绦蛟O(shè)計(jì)第118頁第119頁2.2結(jié)構(gòu)化程序設(shè)計(jì)2.2.1基本概念★基本思想

對(duì)大型的程序設(shè)計(jì),使用一些基本的結(jié)構(gòu)來設(shè)計(jì)程序,無論多復(fù)雜的程序,都可以使用這些基本結(jié)構(gòu)按一定的順序組合起來。這些基本結(jié)構(gòu)的特點(diǎn)都是只有一個(gè)入口、一個(gè)出口。由這些基本結(jié)構(gòu)組成

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論