二級(jí)C公共基礎(chǔ)知識(shí)完整版_第1頁(yè)
二級(jí)C公共基礎(chǔ)知識(shí)完整版_第2頁(yè)
二級(jí)C公共基礎(chǔ)知識(shí)完整版_第3頁(yè)
二級(jí)C公共基礎(chǔ)知識(shí)完整版_第4頁(yè)
二級(jí)C公共基礎(chǔ)知識(shí)完整版_第5頁(yè)
已閱讀5頁(yè),還剩192頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1

一、涉及面廣,但難度小你應(yīng)該知道

公共基礎(chǔ)知識(shí)考題特點(diǎn)及復(fù)習(xí)建議計(jì)算機(jī)等級(jí)二級(jí)理論考試中有關(guān)公共知識(shí)部分的題目共有15道,涉及算法及數(shù)據(jù)結(jié)構(gòu)、程序設(shè)計(jì)基礎(chǔ)、軟件工程基礎(chǔ)和數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ)等四門(mén)課程,盡管知識(shí)面大,但是從整體上分析,考核的內(nèi)容難度不大,考點(diǎn)也相對(duì)集中些。2二、考核重點(diǎn)為基本概念、基本方法和基本運(yùn)算你應(yīng)該知道

計(jì)算機(jī)等級(jí)二級(jí)理論考試中涉及的題目都是基本概念、基本方法和基本運(yùn)算,考核以概念和認(rèn)識(shí)性內(nèi)容為主,理解性、應(yīng)用性內(nèi)容偏少。

3三、考核重點(diǎn)是數(shù)據(jù)結(jié)構(gòu)和算法你應(yīng)該知道以下是對(duì)以往二級(jí)理論考試的大概統(tǒng)計(jì):

算法及數(shù)據(jù)結(jié)構(gòu):34%程序設(shè)計(jì)基礎(chǔ):9%軟件工程基礎(chǔ):25%數(shù)據(jù)庫(kù)設(shè)計(jì)基礎(chǔ):29%4四、幾點(diǎn)復(fù)習(xí)及應(yīng)試建議復(fù)習(xí)的關(guān)鍵是考生必須準(zhǔn)確判斷和掌握常見(jiàn)考點(diǎn)公共基礎(chǔ)知識(shí)部分的知識(shí)點(diǎn)多、雜,考生在學(xué)習(xí)過(guò)程中應(yīng)理清其中的脈絡(luò)關(guān)系(即框架提綱),才能有效地組織和記住各知識(shí)點(diǎn)考生一開(kāi)始學(xué)習(xí)時(shí)不要太追求靈活掌握該部分的內(nèi)容,經(jīng)歷一個(gè)“先熟記,再練習(xí)、熟能生巧”的過(guò)程,這是多數(shù)考生常用的一個(gè)方法。多做習(xí)題,強(qiáng)化知識(shí)點(diǎn)學(xué)習(xí)。51、了解算法的基本概念和一些常用的算法,學(xué)會(huì)計(jì)算算法的時(shí)間復(fù)雜度;2、掌握數(shù)據(jù)結(jié)構(gòu)的基本概念,并了解數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu),學(xué)會(huì)利用圖形的方式表示數(shù)據(jù)結(jié)構(gòu);學(xué)習(xí)目標(biāo)與要求算法與數(shù)據(jù)結(jié)構(gòu):3、了解線性表的基本概念,并掌握線性表的順序存儲(chǔ)結(jié)構(gòu)以及順序存儲(chǔ)的線性表的基本運(yùn)算;4、了解棧和隊(duì)列的基本概念,并掌握它們的基本運(yùn)算;5、了解線性鏈表的基本概念,并掌握線性鏈表的基本運(yùn)算,同時(shí),了解循環(huán)鏈表的基本概念和基本操作;

6、理解樹(shù)的概念,尤其是二叉樹(shù)的基本概念和相關(guān)性質(zhì),掌握二叉樹(shù)的存儲(chǔ)結(jié)構(gòu)和遍歷技術(shù);7、掌握查找技術(shù),學(xué)會(huì)利用順序查找和二分查找在數(shù)列中查找指定的數(shù)據(jù);8、學(xué)會(huì)利用相關(guān)的排序技術(shù)實(shí)現(xiàn)無(wú)序數(shù)列的排序操作。61、了解軟件工程的基本概念;2、了解軟件工程過(guò)程與軟件的生命周期,以及軟件工程的目標(biāo)和原則;學(xué)習(xí)目標(biāo)與要求軟件工程:3、了解利用結(jié)構(gòu)化分析法進(jìn)行軟件工程中的需求分析的方法,并了解需求分析的方法和需要完成的任務(wù);4、了解數(shù)據(jù)流圖的使用方法;5、了解如何利用結(jié)構(gòu)化設(shè)計(jì)方法進(jìn)行軟件設(shè)計(jì),并了解軟件設(shè)計(jì)的一些常用工具;

6、了解軟件測(cè)試的目的和方法,以及軟件測(cè)試的準(zhǔn)則,了解常用的軟件測(cè)試方法的區(qū)別和各自的功能與特點(diǎn);7、了解程序調(diào)試的方法和原則。71、了解程序設(shè)計(jì)的方法,以及程序設(shè)計(jì)風(fēng)格確立的一些因素,掌握程序設(shè)計(jì)的基本規(guī)則;2、了解結(jié)構(gòu)化程序設(shè)計(jì)的基本原則,掌握結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)與特點(diǎn);學(xué)習(xí)目標(biāo)與要求程序設(shè)計(jì)基礎(chǔ):3、了解面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,并理解面向?qū)ο蠓椒ǖ囊恍┗靖拍睢?/p>

數(shù)據(jù)庫(kù)系統(tǒng):1、了解數(shù)據(jù)庫(kù)系統(tǒng)的基本概念,以及數(shù)據(jù)庫(kù)系統(tǒng)的發(fā)展;

2、了解數(shù)據(jù)模型的基本概念,并對(duì)E-R模型、層次模型、網(wǎng)狀模型和關(guān)系模型進(jìn)行了解,并掌握關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操作和數(shù)據(jù)約束等知識(shí);

3、了解關(guān)系模型的基本操作,掌握關(guān)系模型的基本運(yùn)算及擴(kuò)充運(yùn)算;4、了解數(shù)據(jù)庫(kù)的設(shè)計(jì)與管理,掌握數(shù)據(jù)庫(kù)設(shè)計(jì)的幾個(gè)階段的方法和特點(diǎn)。

8算法與數(shù)據(jù)結(jié)構(gòu)一、算法(algorithm)1、算法的基本概念(漢諾塔的例子)

算法是對(duì)特定問(wèn)題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示一個(gè)或多個(gè)操作。它是一組嚴(yán)謹(jǐn)?shù)囟x運(yùn)算順序的規(guī)則,并且每一個(gè)規(guī)則都是有效的,且是明確的,此順序?qū)⒃谟邢薜拇螖?shù)下終止。算法具有可行性、確定性、有窮性、輸入和輸出(擁有足夠的情報(bào))等5個(gè)重要特性。漢諾塔

1->B2->C1->C3->B1->A2->B1->BABC123算法:算法:對(duì)特定問(wèn)題求解步驟的一種描述。算法的描述方法:自然語(yǔ)言、專(zhuān)用工具或某種計(jì)算機(jī)語(yǔ)言。返回10學(xué)習(xí)目標(biāo)與要求2、算法的基本要素(1)對(duì)數(shù)據(jù)對(duì)象的運(yùn)算和操作:算術(shù)運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算、數(shù)據(jù)傳輸算法中各操作之間的執(zhí)行順序;

描述算法的工具通常有傳統(tǒng)流程圖、N-S結(jié)構(gòu)化流程圖、算法描述語(yǔ)言等;一個(gè)算法一般可以用順序、選擇、循環(huán)三種基本結(jié)構(gòu)組合而成。(2)算法的控制結(jié)構(gòu):11算法與數(shù)據(jù)結(jié)構(gòu)3、算法設(shè)計(jì)的基本方法及例子

列舉法(列出所有可能,再逐一檢驗(yàn),得到符合條件的結(jié)果)百錢(qián)買(mǎi)百雞歸納法(通過(guò)特殊情況,經(jīng)過(guò)分析,最后找出一般關(guān)系)遞推(從已知的初始條件出發(fā),逐步推算,得到結(jié)果)猴子分食桃子

遞歸(將問(wèn)題逐層分解,最后歸結(jié)為一些最簡(jiǎn)單的問(wèn)題)求年齡問(wèn)題

減半遞推(重復(fù)將問(wèn)題的規(guī)模減半,而問(wèn)題性質(zhì)不變)二分法求方程實(shí)根

回溯法(以最優(yōu)方式向前試探,如果失敗,則后退再選)八皇后問(wèn)題12算法與數(shù)據(jù)結(jié)構(gòu)3、算法的復(fù)雜度(1)時(shí)間復(fù)雜度依據(jù)算法編制的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗的時(shí)間來(lái)度量。通常有事后統(tǒng)計(jì)法和事前分析估算法。一個(gè)算法是由控制結(jié)構(gòu)(順序、分支和循環(huán))和原操作構(gòu)成的,算法時(shí)間取決于兩者的綜合效果。算法中基本操作重復(fù)執(zhí)行次數(shù)n和算法執(zhí)行時(shí)間同步增長(zhǎng),稱作算法的時(shí)間復(fù)雜度。13算法與數(shù)據(jù)結(jié)構(gòu)(2)空間復(fù)雜度一般是指執(zhí)行這個(gè)算法所需要的內(nèi)存空間。一個(gè)算法所占用的存儲(chǔ)空間包括算法程序所占的空間、

輸入的初始數(shù)據(jù)所占的存儲(chǔ)空間以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲(chǔ)空間。一個(gè)上機(jī)執(zhí)行的程序除了需要存儲(chǔ)空間來(lái)寄存本身所用指令、常數(shù)、變量和輸入數(shù)據(jù)外,也需要一些對(duì)數(shù)據(jù)進(jìn)行操作的工作單元和存儲(chǔ)一些為實(shí)現(xiàn)計(jì)算所需信息的輔助空間。14算法與數(shù)據(jù)結(jié)構(gòu)3、例題講解算法的時(shí)間復(fù)雜度是指(C)A、執(zhí)行算法程序所需要的時(shí)間B、算法程序的長(zhǎng)度C、算法執(zhí)行過(guò)程中所需要的基本運(yùn)算次數(shù)D、算法程序中的指令條數(shù)算法的基本特征是可行性、確定性、

【1】和擁有足夠的情報(bào)?!敬鸢浮?有窮性算法的空間復(fù)雜度是指(D)

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

C)算法程序所占的存儲(chǔ)空間

D)執(zhí)行過(guò)程中所需要的存儲(chǔ)空間√

15算法與數(shù)據(jù)結(jié)構(gòu)在計(jì)算機(jī)中,算法是指(B)

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

C)排序方法 D)查詢方法算法分析的目的是(D)

A)找出數(shù)據(jù)結(jié)構(gòu)的合理性

B)找出算法中輸入和輸出之間的關(guān)系

C)分析算法的易懂性和可靠性

D)分析算法的效率以求改進(jìn)算法的工作量大小和實(shí)現(xiàn)算法所需的存儲(chǔ)單元多少分別稱為算法的【1】

?!敬鸢浮?時(shí)間復(fù)雜度和空間復(fù)雜度√

16算法與數(shù)據(jù)結(jié)構(gòu)二、數(shù)據(jù)結(jié)構(gòu)(DataStructure)1、數(shù)據(jù)結(jié)構(gòu)研究的主要內(nèi)容當(dāng)今計(jì)算機(jī)應(yīng)用的特點(diǎn):1、所處理的數(shù)據(jù)量大且具有一定的關(guān)系;2、對(duì)其操作不再是單純的數(shù)值計(jì)算,而更多地是需要對(duì)其進(jìn)行組織、管理和檢索。對(duì)數(shù)據(jù)的討論不單單是數(shù)據(jù)本身,還要包括數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系。下面各例表示不同的數(shù)據(jù)采用不同的數(shù)據(jù)結(jié)構(gòu)來(lái)組織。17特點(diǎn):每個(gè)學(xué)生的信息占據(jù)一行,所有學(xué)生的信息按學(xué)號(hào)順序依次排列構(gòu)成一張表格;表中每個(gè)學(xué)生的信息依據(jù)學(xué)號(hào)的大小存在著一種前后關(guān)系,這就是我們所說(shuō)的線性結(jié)構(gòu);對(duì)它的操作通常是插入某個(gè)學(xué)生的信息,刪除某個(gè)學(xué)生的信息,更新某個(gè)學(xué)生的信息,按條件檢索某個(gè)學(xué)生的信息等等。應(yīng)用舉例1——學(xué)籍檔案管理假設(shè)一個(gè)學(xué)籍檔案管理系統(tǒng)應(yīng)包含如下表所示的學(xué)生信息。18應(yīng)用舉例2——家庭血緣關(guān)系圖

表示家庭成員的輩分關(guān)系,使用下圖1-1所示的形式描述。圖1-1家庭血緣關(guān)系圖特點(diǎn):

在求解過(guò)程中,所處理的數(shù)據(jù)之間具有層次關(guān)系,這是我們所說(shuō)的樹(shù)形結(jié)構(gòu);對(duì)它的操作有:建立樹(shù)形結(jié)構(gòu),輸出最結(jié)點(diǎn)內(nèi)容等等。應(yīng)用舉例3——制定教學(xué)計(jì)劃在制定教學(xué)計(jì)劃時(shí),需要考慮各門(mén)課程的開(kāi)設(shè)順序。有些課程需要先導(dǎo)課程,有些課程則不需要,而有些課程又是其他課程的先導(dǎo)課程。比如,計(jì)算機(jī)專(zhuān)業(yè)課程的開(kāi)設(shè)情況如下表所示:19這種數(shù)據(jù)可以用下面的圖來(lái)表示:課程先后關(guān)系的圖形描形式:c1c9c4c2c12c10c11c5c3c6c7c8圖1-2計(jì)算機(jī)專(zhuān)業(yè)必修課程開(kāi)設(shè)先后關(guān)系201、數(shù)據(jù)的邏輯結(jié)構(gòu)

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

3、數(shù)據(jù)的運(yùn)算:檢索、排序、插入、刪除、修改等。A.線性結(jié)構(gòu)B.非線性結(jié)構(gòu)A.順序存儲(chǔ)

B.鏈?zhǔn)酱鎯?chǔ)線性表?xiàng)j?duì)樹(shù)形結(jié)構(gòu)圖形結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的三個(gè)方面(亦稱物理結(jié)構(gòu))數(shù)據(jù)結(jié)構(gòu)的主要研究問(wèn)題:212、基本概念和術(shù)語(yǔ)

數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。例:整數(shù)(1,2)、實(shí)數(shù)(1.1,1.2)字符串(Beijing)、圖形、聲音。計(jì)算機(jī)管理圖書(shū)問(wèn)題:在圖書(shū)館里有各種卡片:有按書(shū)名編排的、有按作者編排的、有按分類(lèi)編排。如何將查詢圖書(shū)的這些信息存入計(jì)算機(jī)中既要考慮查詢時(shí)間短,又要考慮節(jié)省空間。最簡(jiǎn)單的辦法之一是建立一張表,每一本書(shū)的信息在表中占一行,如:22數(shù)據(jù)元素在計(jì)算機(jī)中的表示

數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究數(shù)據(jù)組織、存儲(chǔ)和運(yùn)算的一般方法的學(xué)科。如何將0,1,2,3,4,5,6,7,8,9這10個(gè)數(shù)存放

在計(jì)算機(jī)中能最快地達(dá)到你所需要的目的?目的不同,最佳的存儲(chǔ)方方法就不同。從大到小排列:9,8,7,6,5,4,3,2,1,0輸出偶數(shù):0,2,4,6,8,1,3,5,7,9

對(duì)數(shù)據(jù)結(jié)構(gòu)中的節(jié)點(diǎn)進(jìn)行操作處理(插入、刪除、修改、查找、排序)23數(shù)據(jù)元素(DataElement)數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個(gè)體。有時(shí)一個(gè)數(shù)據(jù)元素可由若干數(shù)據(jù)項(xiàng)(DataItem)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小單位。數(shù)據(jù)元素亦稱節(jié)點(diǎn)或記錄。數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)有限個(gè)數(shù)據(jù)元素的集合有限個(gè)節(jié)點(diǎn)間關(guān)系的集合2425數(shù)據(jù)結(jié)構(gòu)可描述為Group=(D,R)例1:一年四季的數(shù)據(jù)結(jié)構(gòu)可表示成

B=(D,R) D={春,夏,秋,冬} R={(春,夏),(夏,秋),(秋,冬)}

例2:家庭成員數(shù)據(jù)結(jié)構(gòu)可表示成 B=(D,R) D={父親,兒子,女兒} R={(父親,兒子),(父親,女兒)}26數(shù)據(jù)結(jié)構(gòu)也可用圖形表示一年四季的數(shù)據(jù)結(jié)構(gòu)可表示成家庭成員數(shù)據(jù)結(jié)構(gòu)可表示成冬春夏秋父親兒子女兒(概念:結(jié)點(diǎn)、前件、后件、根結(jié)點(diǎn)、葉子)27樹(shù)形結(jié)構(gòu)全校學(xué)生檔案管理的組織方式計(jì)算機(jī)程序管理系統(tǒng)也是典型的樹(shù)形結(jié)構(gòu)。281423D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3),(3,4),(2,4)}

213D={1,2,3}R={(1,2),(2,3),(3,2),(1,3)}

圖形結(jié)構(gòu)——節(jié)點(diǎn)間的連結(jié)是任意的293、例題講解數(shù)據(jù)處理的最小單位是(C)

A)數(shù)據(jù) B)數(shù)據(jù)元素C)數(shù)據(jù)項(xiàng)

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

A)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)

B)計(jì)算方法

C)數(shù)據(jù)映象D)邏輯存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的

【4】

以及對(duì)數(shù)據(jù)的操作運(yùn)算。【答案】物理結(jié)構(gòu)(或存儲(chǔ)結(jié)構(gòu))30線性結(jié)構(gòu)與非線性結(jié)構(gòu):線性結(jié)構(gòu):有且只有一個(gè)根結(jié)點(diǎn);每一個(gè)結(jié)點(diǎn)最多有一個(gè)前件,也最多有一個(gè)后件。如:一年四季,26個(gè)英文字母非線性結(jié)構(gòu):線性以外的數(shù)據(jù)結(jié)構(gòu)。如:反映家庭成員間輩分關(guān)系的數(shù)據(jù)結(jié)構(gòu)

算法與數(shù)據(jù)結(jié)構(gòu)31結(jié)點(diǎn)間是以線性關(guān)系聯(lián)結(jié),如前面提到的:一年四季26個(gè)英文字母

線性有限序列4、線性表(LinearList)線性表:具有線性結(jié)構(gòu)的有限序列。ABCDZ春夏秋冬32學(xué)生成績(jī)表線性表33數(shù)據(jù)元素、結(jié)點(diǎn)、記錄數(shù)據(jù)項(xiàng)線性線性表的定義:

線性表是n個(gè)元素的有限序列,它們之間的關(guān)系可以排成一個(gè)線性序列:a1,a2,……,ai,……,an其中n稱作表的長(zhǎng)度,當(dāng)n=0時(shí),稱作空表。線性表的特點(diǎn):1、線性表中所有元素的性質(zhì)相同。2、除第一個(gè)和最后一個(gè)數(shù)據(jù)元素之外,其它數(shù)據(jù)元素有且僅有一個(gè)前驅(qū)和一個(gè)后繼。第一個(gè)數(shù)據(jù)元素?zé)o前驅(qū),最后一個(gè)數(shù)據(jù)元素?zé)o后繼。3、數(shù)據(jù)元素在表中的位置只取決于它自身的序號(hào)。在線性表上常用的運(yùn)算有:初始化、求長(zhǎng)度、取元素、修改、前插、刪除、檢索、排序3435線性表的順序存儲(chǔ)結(jié)構(gòu)

及其插入

與刪除

操作特點(diǎn):

1、線性表中數(shù)據(jù)元素類(lèi)型一致,只有數(shù)據(jù)域,存儲(chǔ)空間利用率高。2、所有元素所占的存儲(chǔ)空間是連續(xù)的。3、各數(shù)據(jù)元素在存儲(chǔ)空間中是按邏輯順序依次存放的(a)做插入、刪除時(shí)需移動(dòng)大量元素。(b)空間估計(jì)不明時(shí),按最大空間分配。算法與數(shù)據(jù)結(jié)構(gòu)36順序存儲(chǔ)存儲(chǔ)地址存儲(chǔ)內(nèi)容元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)×mLo+(n-1)×mLoc(元素i)=Lo+(i-1)×m每個(gè)元素所占用的存儲(chǔ)單元個(gè)數(shù)

線性表的順序存儲(chǔ)結(jié)構(gòu):首地址起始地址基地址插入運(yùn)算ai-1…..a2a1alength

…ai+1aialength插入算法的分析假設(shè)線性表中含有n個(gè)數(shù)據(jù)元素,在進(jìn)行插入操作時(shí),若假定在n+1個(gè)位置上插入元素的可能性均等,則平均移動(dòng)元素的個(gè)數(shù)為:37Xai-1…..a2a1alength

…ai+1aiX在進(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)需要值得考慮。刪除算法的分析38線性表的例題講解順序存儲(chǔ)方法是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置

【1】

的存儲(chǔ)單元中?!敬鸢浮肯噜忛L(zhǎng)度為n的順序存儲(chǔ)線性表中,當(dāng)在任何位置上插入一個(gè)元素概率都相等時(shí),插入一個(gè)元素所需移動(dòng)元素的平均個(gè)數(shù)為【2】?!敬鸢浮?/p>

n/2線性表L=(a1,a2,a3,…ai,…an),下列說(shuō)法正確的是(D)

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

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

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

D)除第一個(gè)元素和最后一個(gè)元素外,其余每個(gè)元素都有一個(gè)且只有一個(gè)直接前件和直接后件√

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

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

C)邏輯結(jié)構(gòu)

D)物理和存儲(chǔ)結(jié)構(gòu)下列敘述中,錯(cuò)誤的是(B)

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

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

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

D)一種數(shù)據(jù)的邏輯結(jié)構(gòu)可以有多種存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指(B)A)數(shù)據(jù)所占的存儲(chǔ)空間B)數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示C)數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D)存儲(chǔ)在外存中的數(shù)據(jù)根據(jù)數(shù)據(jù)結(jié)構(gòu)中各數(shù)據(jù)元素之間前后件關(guān)系的復(fù)雜程度,一般將數(shù)據(jù)結(jié)構(gòu)分成(C)

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)有線性結(jié)構(gòu)和【2】?jī)纱箢?lèi)。非線性結(jié)構(gòu)當(dāng)線性表采用順序存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)時(shí),其主要特點(diǎn)是【1】?!敬鸢浮窟壿嫿Y(jié)構(gòu)中相鄰的結(jié)點(diǎn)在存儲(chǔ)結(jié)構(gòu)中仍相鄰。41

a1

a2….

an進(jìn)棧出棧棧頂棧底5、堆棧和隊(duì)列堆棧和隊(duì)列的定義棧和隊(duì)列是兩種特殊的線性表,它們是運(yùn)算時(shí)要受到某些限制的線性表,故也稱為限定性的數(shù)據(jù)結(jié)構(gòu)。堆棧的定義堆棧:限定只能在表的一端進(jìn)行插入和刪除的特殊的線性表,此種結(jié)構(gòu)稱為后進(jìn)先出。設(shè)棧s=(a1,a2,…ai,…,an),其中a1是棧底元素,an是棧頂元素。棧頂(top):允許插入和刪除的一端;約定top始終指向新數(shù)據(jù)元素將存放的位置。棧底(bottom):不允許插入和刪除的一端。42隊(duì)列的定義隊(duì)列:一種特殊的線性結(jié)構(gòu),限定只能在表的一端進(jìn)行插入,在表的另一端進(jìn)行刪除的線性表。此種結(jié)構(gòu)稱為先進(jìn)先出(FIFO)表。

a1,

a2,

a3,

a4,…………

an-1,

an隊(duì)列示意圖隊(duì)頭隊(duì)尾隊(duì)列的主要運(yùn)算(1)設(shè)置一個(gè)空隊(duì)列;(2)插入一個(gè)新的隊(duì)尾元素,稱為進(jìn)隊(duì);(3)刪除隊(duì)頭元素,稱為出隊(duì);(4)讀取隊(duì)頭元素;43堆棧和隊(duì)列的例題講解棧和隊(duì)列的共同特點(diǎn)是(C)

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

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

C)只允許在端點(diǎn)處插入和刪除元素

D)沒(méi)有共同點(diǎn)如果進(jìn)棧序列為e1,e2,e3,e4,則可能的出棧序列是(B)

A)e3,e1,e4,e2B)e4,e3,e2,e1

C)e3,e4,e1,e2 D)任意順序√

4445a=4×2+b826b=6÷3+cc=3×2+dd=1+2=8+b=2+c=6+d=3826一些重要的程序語(yǔ)言(如C語(yǔ)言和Pascal語(yǔ)言)允許過(guò)程的遞歸調(diào)用。而實(shí)現(xiàn)遞歸調(diào)用中的存儲(chǔ)分配通常用(A)

A)棧 B)堆C)數(shù)組 D)鏈表當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不能進(jìn)行入隊(duì)運(yùn)算。這種情況稱為【2】。答案:上溢由兩個(gè)棧共享一個(gè)存儲(chǔ)空間的好處是(B)

A)減少存取時(shí)間,降低下溢發(fā)生的機(jī)率

B)節(jié)省存儲(chǔ)空間,降低上溢發(fā)生的機(jī)率

C)減少存取時(shí)間,降低上溢發(fā)生的機(jī)率

D)節(jié)省存儲(chǔ)空間,降低下溢發(fā)生的機(jī)率下列關(guān)于棧的敘述中正確的是(

D)A)在棧中只能插入數(shù)據(jù)B)在棧中只能刪除數(shù)據(jù)C)棧是先進(jìn)先出的線性表D)棧是后進(jìn)先出的線性表下列關(guān)于隊(duì)列的敘述中正確的是(C)A)在隊(duì)列中只能插入數(shù)據(jù)B)在隊(duì)列中只能刪除數(shù)據(jù)C)隊(duì)列是先進(jìn)先出的線性表

D)隊(duì)列是后進(jìn)先出的線性表√

46兩個(gè)棧共享只有兩個(gè)棧都多時(shí)才溢出。不共享的話,兩個(gè)棧只有一個(gè)棧多就溢出,Rear隊(duì)尾Front隊(duì)頭棧底至棧頂依次存放元素A、B、C、D,在第五個(gè)元素E入棧前,棧中元素可以出棧,則出棧序列可能是(B)

A)ABCED B)DCBEA

C)DBCEA D)CDABE

47D出→C出→B出→→E出→A出→

E進(jìn)→順序出棧:進(jìn)棧:順序存儲(chǔ)結(jié)構(gòu)常用于線性數(shù)據(jù)結(jié)構(gòu),將邏輯上相鄰的數(shù)據(jù)元素存儲(chǔ)在物理上相鄰的存儲(chǔ)單元里。順序存儲(chǔ)結(jié)構(gòu)的三個(gè)缺點(diǎn):1.作插入或刪除操作時(shí),需移動(dòng)大量元數(shù)。2.長(zhǎng)度變化較大時(shí),需按最大空間分配。3.表的容量難以擴(kuò)充。存儲(chǔ)內(nèi)容元素n……..元素i……..元素2元素148496、線性表的鏈?zhǔn)酱鎯?chǔ)——

線性鏈表線性鏈表的基本概念:

線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)稱為線性鏈表。為了適應(yīng)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),計(jì)算機(jī)存儲(chǔ)空間被劃分為一個(gè)一個(gè)小塊,每一小塊占若干字節(jié),通常稱這些小塊為存儲(chǔ)結(jié)點(diǎn)。算法與數(shù)據(jù)結(jié)構(gòu)將存儲(chǔ)空間中的每一個(gè)存儲(chǔ)結(jié)點(diǎn)分為兩部:一部分稱為數(shù)據(jù)域,用于存儲(chǔ)數(shù)據(jù)元素的值;另一部分稱為指針域,用于存放下一個(gè)數(shù)據(jù)元素的存儲(chǔ)序號(hào)(即存儲(chǔ)結(jié)點(diǎn)的地址),也就是指向后件結(jié)點(diǎn).線性鏈表中存儲(chǔ)結(jié)點(diǎn)的結(jié)構(gòu)如圖2.20所示501536元素21400元素11346元素3∧元素4head1346

元素31536

…….

……..

…….1536

元素21400

…….

……..

…….∧

元素413461400

元素11345

指針

存儲(chǔ)內(nèi)容存儲(chǔ)地址

鏈?zhǔn)酱鎯?chǔ)134552指向線性表中第一個(gè)結(jié)點(diǎn)的指針HEAD稱為頭指針。當(dāng)HEAD=NULL(或0)時(shí)稱為空表。對(duì)于線性鏈表,可以從頭指針開(kāi)始,沿著各個(gè)結(jié)點(diǎn)的指針掃描到鏈表中的所有結(jié)點(diǎn)。線性鏈表的邏輯結(jié)構(gòu)圖所示531、比順序存儲(chǔ)結(jié)構(gòu)的存儲(chǔ)密度小(每個(gè)節(jié)點(diǎn)都由數(shù)據(jù)域和指針域組成,所以相同空間內(nèi)假設(shè)全存滿的話順序比鏈?zhǔn)酱鎯?chǔ)更多)。2、邏輯上相鄰的節(jié)點(diǎn)物理上不必相鄰。3、插入、刪除靈活(不必移動(dòng)節(jié)點(diǎn),只要改變節(jié)點(diǎn)中的指針)。4、查找結(jié)點(diǎn)時(shí)鏈?zhǔn)酱鎯?chǔ)要比順序存儲(chǔ)慢。鏈接存儲(chǔ)結(jié)構(gòu)特點(diǎn):算法與數(shù)據(jù)結(jié)構(gòu)545455線性鏈表的基本運(yùn)算:線性鏈表的運(yùn)算主要有以下幾個(gè):①在線性鏈表中包含指定元素的結(jié)點(diǎn)之前

插入一個(gè)新元素。②在線性鏈表中刪除包含指定元素的結(jié)點(diǎn)。③將兩個(gè)線性鏈表按要求合并成一個(gè)線性鏈表。56線性鏈表的插入

運(yùn)算:線性鏈表的插入是指在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)下的線性表中插入一個(gè)新元素。為了要在線性鏈表中插入一個(gè)新元素,首先要給該元素分配一個(gè)新結(jié)點(diǎn),然后將存放新元素值的結(jié)點(diǎn)鏈接到線性鏈表中指定的位置。算法與數(shù)據(jù)結(jié)構(gòu)575758

線性鏈表的刪除指在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)下的線性表中刪除包含指定元素的結(jié)點(diǎn)。為了在線性鏈表中刪除包含指定元素的結(jié)點(diǎn),首先要在線性鏈表中找到這個(gè)結(jié)點(diǎn),然后將要?jiǎng)h除結(jié)點(diǎn)放回到可利用棧。線性鏈表的刪除運(yùn)算:算法與數(shù)據(jù)結(jié)構(gòu)5959a1a2an∧a3L…..線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)可用“結(jié)構(gòu)指針”來(lái)描述帶頭結(jié)點(diǎn)的線性鏈表datanexttypedefstructLNode{intdata;StructLNode*next;}JD;babaxPP單鏈表的插入運(yùn)算S在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)babax∧anaia1a2PPai-1xL單鏈表的插入運(yùn)算S單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}

∧anaia1a2Pai-1L單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}∧anaia1a2Pai-1L單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;

s->next=p->next;p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;

s->next=p->next;

p->next=s;returnOK;}S∧anaia1a2Pai-1xL單鏈表的插入運(yùn)算voidlbcr(JD*p,intx){/*在P所指向的結(jié)點(diǎn)之后插入新的結(jié)點(diǎn)*/JD*s;/*定義指向結(jié)點(diǎn)類(lèi)型的指針*/s=(JD*)malloc(sizeof(JD));/*生成新結(jié)點(diǎn)*/

s->data=x;s->next=p->next;

p->next=s;

returnOK;}voidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;

if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算a1qai-1a1aiai+1Lpqvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpqvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/

p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算ai-1a1aiai+1Lpvoidlbsc(JD*p)/*刪除p指針指向結(jié)點(diǎn)的后一個(gè)結(jié)點(diǎn)*/{JD*q;if(p->next!=NULL){q=p->next;/*q指向p的后繼結(jié)點(diǎn)*/p->next=q->next;/*修改p結(jié)點(diǎn)的指針域*/

free(q);/*刪除并釋放結(jié)點(diǎn)*/}}單鏈表的刪除運(yùn)算線性鏈表的查找操作:設(shè)無(wú)表頭結(jié)點(diǎn)的線性鏈表的頭指針為h,沿著鏈表的開(kāi)始往后找結(jié)點(diǎn)x,若找到,則返回該結(jié)點(diǎn)在鏈表中的位置,否則返回空地址。JD*lbcz(JD*h,intx){JD*p;p=h;while(p!=NULL&&p->data!=x)p=p->next;return(p);}2.5.2循環(huán)鏈表:

首尾相接的鏈表。將最后一個(gè)結(jié)點(diǎn)的空指針改為指向頭結(jié)點(diǎn),從任一結(jié)點(diǎn)出發(fā)均可找到其它結(jié)點(diǎn)。a1a2an∧a3L…..帶頭結(jié)點(diǎn)的單鏈表a1a2ana3L…..循環(huán)單鏈表LS28375^PR(1)L=P->next;28375^PRSLL

例題對(duì)以下單鏈表分別執(zhí)行下列各程序段,并畫(huà)出結(jié)果示意圖.LS28375^PR(2)R->data=P->data;28575^PRS(3)R->data=P->next->data;28775^PRSLS28375^PR(4)P->next->next->next->data=P->data;25375^PRSLS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->link=P;P->link=S;LS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->link=P;P->link=S;PLS28375^PRLS28375^PR(7)P=(JD*)malloc(sizeof(JD));

P->data=10;R->next=P;P->next=S;P10LS28375^PRLS28375^PR(5)P=(JD*)malloc(sizeof(JD));P->data=10;

R->next=P;P->next=S;LS28375^RP10LS28375^PR(7)P=(JD*)malloc(sizeof(JD));P->data=10;R->next=P;

P->next=S;LS28375^RP10LS28375^PR(8)T=L;T->next=P->next;free(P);LS2837^PRT5LS28375^PR(9)S->next=L;LS28375PR如果S->next==L則S所指向的結(jié)點(diǎn)為尾結(jié)點(diǎn).LS28375^PR循環(huán)鏈表的結(jié)構(gòu)與前面所討論的線性鏈表相比,具有以下兩個(gè)特點(diǎn):①循環(huán)鏈表的頭指針指向表頭結(jié)點(diǎn)。②在循環(huán)鏈表中,所有結(jié)點(diǎn)的指針構(gòu)成了一個(gè)環(huán)狀鏈。

圖2.29是循環(huán)鏈表的示意圖。循環(huán)鏈表:8889在實(shí)際應(yīng)用中,循環(huán)鏈表與線性單鏈表相比主要有以下兩個(gè)方面的優(yōu)點(diǎn):①在循環(huán)鏈表中,只要指出表中任何一個(gè)結(jié)點(diǎn)的位置,就可以從它出發(fā)訪問(wèn)到表中其他所有的結(jié)點(diǎn)。②由于在循環(huán)鏈表中設(shè)置了一個(gè)表頭結(jié)點(diǎn),因此,在任何情況下,循環(huán)鏈表中至少有一個(gè)結(jié)點(diǎn)存在,從而使空表與非空表的運(yùn)算統(tǒng)一。算法與數(shù)據(jù)結(jié)構(gòu)鏈表不具有的特點(diǎn)是(B)A)不必事先估計(jì)存儲(chǔ)空間B)可隨機(jī)訪問(wèn)任一元素C)插入刪除不需要移動(dòng)元素

D)所需空間與線性表長(zhǎng)度成正比數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性鏈表屬于【1】。【答案】存儲(chǔ)結(jié)構(gòu)

棧通常采用的兩種存儲(chǔ)結(jié)構(gòu)是(A)

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)線性鏈表的例題講解9091線性表的順序存儲(chǔ)結(jié)構(gòu)和線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)分別是(C)A)順序存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)B)順序存取的存儲(chǔ)結(jié)構(gòu)、隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)C)隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)、順序存取的存儲(chǔ)結(jié)構(gòu)D)任意存取的存儲(chǔ)結(jié)構(gòu)、任意存取的存儲(chǔ)結(jié)構(gòu)順序存儲(chǔ)結(jié)構(gòu)的地址在內(nèi)存中是連續(xù)的所以可以通過(guò)計(jì)算地址實(shí)現(xiàn)隨機(jī)存取,而鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的存儲(chǔ)地址不一定連續(xù),只能通過(guò)第1個(gè)結(jié)點(diǎn)的指針順序存??;927、樹(shù)與二叉樹(shù):樹(shù)的基本概念:前面我們討論的線性表,棧、隊(duì)列和數(shù)組等都是線性結(jié)構(gòu)。而樹(shù)是一種非線性數(shù)據(jù)結(jié)構(gòu),它的每一個(gè)結(jié)點(diǎn),都可以有不止一個(gè)直接后繼,除根外的所有結(jié)點(diǎn),都有且只有一個(gè)直接前趨。這些數(shù)據(jù)結(jié)點(diǎn)按分支關(guān)系組織起來(lái),清晰地反映了數(shù)據(jù)元素之間的層次關(guān)系。

93算法與數(shù)據(jù)結(jié)構(gòu)現(xiàn)實(shí)世界中,能用樹(shù)的結(jié)構(gòu)表示的例子:學(xué)校的行政關(guān)系、書(shū)的層次結(jié)構(gòu)、人類(lèi)的家族血緣關(guān)系等。94949595

二叉樹(shù)(binarytree)是一種很有用的非線性結(jié)構(gòu)。二叉樹(shù)具有以下兩個(gè)特點(diǎn):(1)非空二叉樹(shù)只有一個(gè)根結(jié)點(diǎn);(2)每一個(gè)結(jié)點(diǎn)最多有兩棵子樹(shù),且分別稱為該結(jié)點(diǎn)的左子樹(shù)與右子樹(shù)。二叉樹(shù)(BinaryTree):因?yàn)闃?shù)的每個(gè)結(jié)點(diǎn)的度不同,存儲(chǔ)困難,使對(duì)樹(shù)的處理算法很復(fù)雜。所以引出二叉樹(shù)的討論。969797性質(zhì)1:在任意一棵二叉樹(shù)中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個(gè)。二叉樹(shù)的性質(zhì):

特別要注意:二叉樹(shù)是樹(shù)的特殊情況。aabb兩棵不同的二叉樹(shù)98例子1:某二叉樹(shù)中度為2的結(jié)點(diǎn)有18個(gè),則該二叉樹(shù)中有

19個(gè)葉子結(jié)點(diǎn)。99性質(zhì)2:二叉樹(shù)的第i層上至多有2i-1(i1)個(gè)結(jié)點(diǎn)二叉樹(shù)的性質(zhì):423167891011121314155第三層上(i=3),有23-1=4個(gè)節(jié)點(diǎn)。第四層上(i=4),有24-1=8個(gè)節(jié)點(diǎn)。100二叉樹(shù)的性質(zhì):性質(zhì)3:深度為h的二叉樹(shù)中至多含有2h-1個(gè)結(jié)點(diǎn)423167891011121314155此樹(shù)的深度h=4,共有24-1=15個(gè)節(jié)點(diǎn)。101滿二叉樹(shù)與完全二叉樹(shù)滿二叉樹(shù)是指除最后一層外,每一層上的所有結(jié)點(diǎn)都有兩個(gè)子結(jié)點(diǎn)。完全二叉樹(shù)是指這樣的二叉樹(shù):除最后一層外,每一層上的結(jié)點(diǎn)數(shù)均達(dá)到最大值;在最后一層上只缺少右邊的若干結(jié)點(diǎn)。注意:滿二叉樹(shù)是完全二叉樹(shù),完全二叉樹(shù)不一定是滿二叉樹(shù)。算法與數(shù)據(jù)結(jié)構(gòu)102滿二叉樹(shù)的特點(diǎn):每一層上都含有最大結(jié)點(diǎn)數(shù)。102103完全二叉樹(shù)的特點(diǎn):除最后一層外,每一層都取最大結(jié)點(diǎn)數(shù),最后一層結(jié)點(diǎn)都集中在該層最左邊的若干位置103104對(duì)于完全二叉樹(shù)而言如果它的結(jié)點(diǎn)個(gè)數(shù)為偶數(shù),則該二叉樹(shù)中:

葉子結(jié)點(diǎn)的個(gè)數(shù)=非葉子結(jié)點(diǎn)的個(gè)數(shù)如果它的結(jié)點(diǎn)個(gè)數(shù)為奇數(shù),則該二叉樹(shù)中:

葉子結(jié)點(diǎn)的個(gè)數(shù)=非葉子結(jié)點(diǎn)的個(gè)數(shù)+1

(即葉子結(jié)點(diǎn)數(shù)比非葉子結(jié)點(diǎn)數(shù)多一個(gè))規(guī)律總結(jié):算法與數(shù)據(jù)結(jié)構(gòu)105例題講解1、設(shè)一棵完全二叉樹(shù)共有700個(gè)結(jié)點(diǎn),則在該二叉樹(shù)中有

350個(gè)葉子結(jié)點(diǎn)。2、在深度為5的滿二叉樹(shù)中,葉子結(jié)點(diǎn)的個(gè)數(shù)為(C

)(即第5層的葉子個(gè)數(shù)2i-1)A)32B)31C)16D)15算法與數(shù)據(jù)結(jié)構(gòu)√

二叉樹(shù)的遍歷

二叉樹(shù)的遍歷是指不重復(fù)地訪問(wèn)二叉樹(shù)中的所有結(jié)點(diǎn)。二叉樹(shù)的遍歷可以分為三種:前序遍歷、中序遍歷、后序遍歷。設(shè)訪問(wèn)根結(jié)點(diǎn)記作V;遍歷根的左子樹(shù)記作L;遍歷根的右子樹(shù)記作R;

前序:

VLR(即根左右)

中序:

LVR(即左根右)后序:

LRV(即左右根)1061071071081、設(shè)一棵二叉樹(shù)的中序遍歷結(jié)果為DBEAFC,

前序遍歷結(jié)果為ABDECF,則后序遍歷結(jié)果為:

DEBFCA

例題講解2、已知一棵二叉樹(shù)前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹(shù)的后序遍歷為(B)

A)GEDHFBCAB)DGEBHFCAC)ABCDEFGH D)ACBFEDHG√

前序:ABDECF(前序:根最先訪問(wèn),根必在第一個(gè))

中序:DBEAFC(由上可知中序根所在,劃分出左右子樹(shù))前序:ABDECF中序:DBEAFC前序:ABDECF中序:DBEA

FC具有3個(gè)結(jié)點(diǎn)的二叉樹(shù)有(D)

A)2種形態(tài)B)4種形態(tài)

C)7種形態(tài)D)5種形態(tài)

設(shè)有下列二叉樹(shù):

對(duì)此二叉樹(shù)前序遍歷的結(jié)果為(B)A)ZBTTCPXA B)ATBZXCTP

C)ZBTACTXPD)ATBZXCPT√

1091108、查找和排序:查找——又稱為檢索

查找算法的評(píng)價(jià)主要考慮算法的時(shí)間復(fù)雜性,既可以采用數(shù)量級(jí)的形式表示,也可以采用平均檢索(查找)長(zhǎng)度,即在查找成功情況下的平均比較次數(shù)來(lái)表示。查找可分為順序查找和二分法查找兩種。算法與數(shù)據(jù)結(jié)構(gòu)111(a)順序查找:

順序查找又稱線性查找。它是一種最簡(jiǎn)單、最基本的查找方法?;舅枷胧牵簭谋碇械谝粭l記錄開(kāi)始,逐個(gè)進(jìn)行記錄的關(guān)鍵字和給定值的比較。若某個(gè)記錄的關(guān)鍵字和給定值相等,則查找成功;否則,若直至最后一個(gè)記錄,其關(guān)鍵字和給定值都不相等,則表明表中沒(méi)有所查記錄,查找不成功。算法與數(shù)據(jù)結(jié)構(gòu)112

二分查找又稱折半查找。作為二分查找對(duì)象的表必須是順序存儲(chǔ)的有序表,即各記錄的次序是按其關(guān)鍵字的大小順序(以下假定按從小到大的順序)排列的表。(b)二分查找:算法與數(shù)據(jù)結(jié)構(gòu)113

二分查找的具體做法是:先取表中間位置的記錄關(guān)鍵字與給定值比較。若相等,則查找成功;否則,若給定值比該記錄的關(guān)鍵字小,則給定值必在表的前半部分。在這前半部分中再取中間位置記錄的關(guān)鍵字進(jìn)行比較,就又可以排除這部分的一半。依次反復(fù)進(jìn)行,直到找到給定值或找完全表而找不到為止。在最壞情況下,二分查找只需要比較次數(shù):對(duì)于n較大時(shí),平均查找長(zhǎng)度可以近似地表示為:算法與數(shù)據(jù)結(jié)構(gòu)例:246791222283645547280114

排序是將一組雜亂無(wú)章的數(shù)據(jù)按一定的規(guī)律順次排列起來(lái)。通常數(shù)據(jù)對(duì)象有多個(gè)屬性域,即由多個(gè)數(shù)據(jù)成員組成,其中有一個(gè)屬性域可用來(lái)區(qū)分象,作為排序依據(jù)。該域稱為關(guān)鍵字(key)。

排序的時(shí)間開(kāi)銷(xiāo)是衡量算法好壞的最重要的標(biāo)志。對(duì)于長(zhǎng)度為n的有序線性表,查找時(shí)最壞情況只需比較n次。排序(sort)115(a)交換類(lèi)排序:交換類(lèi)排序法:冒泡排序法:需要比較的次數(shù)為n(n-1)/2快速排序法:是對(duì)冒泡排序的改進(jìn),是目前內(nèi)部排序中速度最快的一種。算法與數(shù)據(jù)結(jié)構(gòu)116(b)插入類(lèi)排序:插入類(lèi)排序的基本方法是:每步將一個(gè)待排序的對(duì)象,按其關(guān)鍵字大小,插入到前面已經(jīng)排好序的一組對(duì)象的適當(dāng)位置上,直到對(duì)象全部插入為止。簡(jiǎn)單插入排序法:最壞情況需要n(n-1)/2次比較;希爾排序法:最壞情況需要O(n)次比較。算法與數(shù)據(jù)結(jié)構(gòu)117(c)選擇類(lèi)排序:選擇類(lèi)排序的思想是:每一趟(例如,第i趟,i=0,1,…,n?2)在后面n?i個(gè)待排序?qū)ο笾羞x出關(guān)鍵字最?。ㄉ?,若為降序,選出最大關(guān)鍵字)的對(duì)象,作為有序?qū)ο笮蛄械牡趇個(gè)對(duì)象。待到第n?2趟作完,待排序?qū)ο笾皇O?個(gè),不用再選了,結(jié)束排序。簡(jiǎn)單選擇排序法,最壞情況需要n(n-1)/2次比較;堆排序法,最壞情況需要O(nlog2n)次比較。118程序設(shè)計(jì)基礎(chǔ)(一)程序設(shè)計(jì)方法與風(fēng)格

如何形成良好的程序設(shè)計(jì)風(fēng)格:1、源程序內(nèi)部文檔化;選擇標(biāo)識(shí)符的名字(有含義

好理解)注釋?zhuān)ㄐ蜓孕院凸δ苄宰⑨專(zhuān)┏绦虻囊曈X(jué)組織(空格空行縮進(jìn))位于源程序模塊內(nèi)部一般位于模塊的首部,用于說(shuō)明模塊的相關(guān)信息119數(shù)據(jù)說(shuō)明的次序應(yīng)該規(guī)范化便于查找變量(按順序排列)對(duì)復(fù)雜數(shù)據(jù)結(jié)構(gòu)應(yīng)注釋說(shuō)明

2、數(shù)據(jù)說(shuō)明程序設(shè)計(jì)基礎(chǔ)3、語(yǔ)句的結(jié)構(gòu)每條語(yǔ)句簡(jiǎn)單明了盡量不用或少用GOTO語(yǔ)句盡量只采用3種基本控制結(jié)構(gòu)編程4、輸入和輸出對(duì)所有輸入數(shù)據(jù)進(jìn)行校驗(yàn)和合理性檢查輸入輸出格式保持一致設(shè)計(jì)良好的輸出報(bào)表輸入方式應(yīng)力求簡(jiǎn)單,盡量避免給用戶帶來(lái)不必要的麻煩;交互式輸入數(shù)據(jù)時(shí)應(yīng)有必要的提示信息;程序應(yīng)對(duì)輸入數(shù)據(jù)的合法性進(jìn)行檢查;若用戶輸入某些數(shù)據(jù)后可能產(chǎn)生嚴(yán)重后果,應(yīng)給用戶輸出必要的提示并要求用戶確認(rèn);應(yīng)根據(jù)系統(tǒng)的特點(diǎn)和用戶的習(xí)慣設(shè)計(jì)出令用戶滿意的輸入方式。

輸出數(shù)據(jù)的格式應(yīng)清晰,美觀;輸出數(shù)據(jù)時(shí)要加上必要的提示信息。120121結(jié)構(gòu)化程序設(shè)計(jì)的主要原則是功能分解并逐步求精。當(dāng)一些任務(wù)十分復(fù)雜不易描述時(shí),可以將它拆分為一系列較小的功能部件,直到這些子任務(wù)小到易于理解和實(shí)現(xiàn)的程度。(后面詳講)結(jié)構(gòu)化程序的特點(diǎn):程序結(jié)構(gòu)僅由順序、選擇和循環(huán)3種結(jié)構(gòu)復(fù)合而成。程序設(shè)計(jì)基礎(chǔ)(二)結(jié)構(gòu)化程序設(shè)計(jì)

122(三)面向?qū)ο蟮某绦蛟O(shè)計(jì)方法

面向?qū)ο笈c面向過(guò)程(晚會(huì)的分析過(guò)程)面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object-OrientedProgramming,OOP)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程中,指導(dǎo)開(kāi)發(fā)活動(dòng)的系統(tǒng)方法,簡(jiǎn)稱OO方法,它是建立在對(duì)象概念(對(duì)象、類(lèi)和繼承)基礎(chǔ)上的方法。程序設(shè)計(jì)基礎(chǔ)123面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn):(1)從認(rèn)知學(xué)的角度來(lái)看,面向?qū)ο蠓椒ǚ先藗儗?duì)客觀世界的認(rèn)識(shí)規(guī)律。(2)面向?qū)ο蠓椒ㄩ_(kāi)發(fā)的軟件系統(tǒng)易于維護(hù),其體系結(jié)構(gòu)易于理解、擴(kuò)充和修改。(3)面向?qū)ο蠓椒ㄖ械睦^承機(jī)制有力地支持軟件的復(fù)用。程序設(shè)計(jì)基礎(chǔ)124幾個(gè)術(shù)語(yǔ):對(duì)象:在現(xiàn)實(shí)世界中,每個(gè)實(shí)體都是對(duì)象,例如,大學(xué)生、汽車(chē)、電視機(jī)、空調(diào)等都是現(xiàn)實(shí)世界中的對(duì)象屬性:通常是一些數(shù)據(jù),有時(shí)它也可以是另一個(gè)對(duì)象事件:是由對(duì)象識(shí)別的一個(gè)動(dòng)作,用戶可以編寫(xiě)相應(yīng)代碼對(duì)此動(dòng)作進(jìn)行響應(yīng)方法:對(duì)象中的屬性只能通過(guò)該對(duì)象所提供的操作來(lái)存取或修改程序設(shè)計(jì)基礎(chǔ)125類(lèi):類(lèi)是一組具有相同屬性和相同操作的對(duì)象的集合。派生類(lèi):由已存在的類(lèi)派生出來(lái)的新類(lèi),也叫子類(lèi)?;?lèi):用來(lái)生成新類(lèi)的類(lèi)。繼承是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義他們。繼承分單繼承和多重繼承。單繼承指一個(gè)類(lèi)只允許有一個(gè)父類(lèi),多重繼承指一個(gè)類(lèi)允許有多個(gè)父類(lèi)多態(tài)性是指同樣的消息被不同的對(duì)象接受時(shí)可導(dǎo)致完全不同的行動(dòng)的現(xiàn)象。程序設(shè)計(jì)基礎(chǔ)126

水上交通工具陸上交通工具水陸兩用交通工具

多重繼承圖

程序設(shè)計(jì)基礎(chǔ)127四、例題講解:程序設(shè)計(jì)基礎(chǔ)結(jié)構(gòu)化程序設(shè)計(jì)的3種結(jié)構(gòu)是(D)

A)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、轉(zhuǎn)移結(jié)構(gòu)

B)分支結(jié)構(gòu)、等價(jià)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

C)多分支結(jié)構(gòu)、賦值結(jié)構(gòu)、等價(jià)結(jié)構(gòu)D)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)在設(shè)計(jì)程序時(shí),應(yīng)采納的原則之一是(D)

A)不限制goto語(yǔ)句的使用B)減少或取消注解行

C)程序越短越好

D)程序結(jié)構(gòu)應(yīng)有助于讀者理解√

128程序設(shè)計(jì)語(yǔ)言的基本成分是數(shù)據(jù)成分、運(yùn)算成分、控制成分和(D)

A)對(duì)象成分 B)變量成分

C)語(yǔ)句成分 D)傳輸成分程序設(shè)計(jì)基礎(chǔ)結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是(D)

A)程序的規(guī)模 B)程序的效率

C)程序設(shè)計(jì)語(yǔ)言的先進(jìn)性

D)程序易讀性以下不屬于對(duì)象的基本特點(diǎn)的是(C)

A)分類(lèi)性

B)多態(tài)性C)繼承性

D)封裝性√

129對(duì)建立良好的程序設(shè)計(jì)風(fēng)格,下面描述正確的是(A)

A)程序應(yīng)簡(jiǎn)單、清晰、可讀性好

B)符號(hào)名的命名只要符合語(yǔ)法

C)充分考慮程序的執(zhí)行效率

D)程序的注釋可有可無(wú)在結(jié)構(gòu)化程序設(shè)計(jì)思想提出之前,在程序設(shè)計(jì)中曾強(qiáng)調(diào)程序的效率,現(xiàn)在,與程序的效率相比,人們更重視程序的(C)

A)安全性 B)一致性

C)可理解性

D)合理性程序設(shè)計(jì)基礎(chǔ)√

130下列敘述中,不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的主要原則的是(B)

A)自頂向下B)由底向上

C)模塊化 D)限制使用goto語(yǔ)句對(duì)象實(shí)現(xiàn)了數(shù)據(jù)和操作的結(jié)合,是指對(duì)數(shù)據(jù)和數(shù)據(jù)的操作進(jìn)行(C)

A)結(jié)合B)隱藏C)封裝

D)抽象

在面向?qū)ο蠓椒ㄖ校粋€(gè)對(duì)象請(qǐng)求另一個(gè)對(duì)象為其服務(wù)的方式是通過(guò)發(fā)送(D)A)調(diào)用語(yǔ)句B)命令C)口令D)消息程序設(shè)計(jì)基礎(chǔ)√

131信息屏蔽的概念與下述哪一種概念直接相關(guān)(B)A)軟件結(jié)構(gòu)定義B)模塊獨(dú)立性C)模塊類(lèi)型劃分D)模塊偶合度下列對(duì)對(duì)象概念描述錯(cuò)誤的是(A)A)任何對(duì)象都必須有繼承性B)對(duì)象是屬性和方法的封裝體C)對(duì)象間的通訊靠消息傳遞D)操作是對(duì)象的動(dòng)態(tài)屬性程序設(shè)計(jì)基礎(chǔ)√

標(biāo)識(shí)唯一性分類(lèi)性多態(tài)性封裝性模塊獨(dú)立性好面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的面向過(guò)程的方法有本質(zhì)的不同,它的基本原理是(C)

A)模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系

B)強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念

C)使用現(xiàn)實(shí)世界的概念抽象地思考問(wèn)題從而自然地解決問(wèn)題

D)鼓勵(lì)開(kāi)發(fā)者在軟件開(kāi)發(fā)的絕大部分中都用實(shí)際領(lǐng)域的概念去思考

在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類(lèi)描述的是具有相似性質(zhì)的一組

【1】?!敬鸢浮繉?duì)象

在面向?qū)ο蠓椒ㄖ校?lèi)之間共享屬性和操作的機(jī)制稱為

【2】?!敬鸢浮坷^承一個(gè)類(lèi)可以從直接或間接的祖先中繼承所有屬性和方法。采用這個(gè)方法提高了軟件的

【3】。【答案】可重用性

133在面向?qū)ο蟮脑O(shè)計(jì)中,用來(lái)請(qǐng)求對(duì)象執(zhí)行某一處理或回答某些信息的要求稱為【5】?!敬鸢浮浚合⒃诔绦蛟O(shè)計(jì)階段應(yīng)該采取

【6】

和逐步求精的方法,把一個(gè)模塊的功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而用某種程序設(shè)計(jì)語(yǔ)言寫(xiě)成程序?!敬鸢浮浚鹤皂斚蛳骂?lèi)是一個(gè)支持集成的抽象數(shù)據(jù)類(lèi)型,而對(duì)象是類(lèi)的【12】

。

【答案】:實(shí)例程序設(shè)計(jì)基礎(chǔ)【7】

是一種信息隱蔽技術(shù),目的在于將對(duì)象的使用者和對(duì)象的設(shè)計(jì)者分開(kāi)?!敬鸢浮浚悍庋b子程序通常分為兩類(lèi):

【9】

和函數(shù),前者是命令的抽象,后者是為了求值?!敬鸢浮浚哼^(guò)程源程序文檔化要求程序應(yīng)加注釋。注釋一般分為序言性注釋和【10】

?!敬鸢浮浚汗δ苄宰⑨?35軟件工程基礎(chǔ)(一)基本概念

軟件工程:軟件工程是指應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來(lái)解決軟件問(wèn)題的工程。其目的是提高軟件生產(chǎn)率、提高軟件質(zhì)量、降低

軟件成本。

軟件危機(jī):早期的軟件主要指程序,采用個(gè)體工作方式,缺少相關(guān)文檔,質(zhì)量低,維護(hù)困難,這些問(wèn)題稱為“軟件危機(jī)”,軟件工程概念的出現(xiàn)源自于軟件危機(jī)。軟件生命周期將軟件產(chǎn)品從提出、實(shí)現(xiàn)、使用維護(hù)到停止使用退役的過(guò)程稱為軟件生命周期。分為軟件定義、軟件開(kāi)發(fā)及軟件運(yùn)行維護(hù)3個(gè)時(shí)期。維護(hù)是持續(xù)時(shí)間最長(zhǎng),花費(fèi)代價(jià)最大的一個(gè)時(shí)期,軟件工程學(xué)的一個(gè)目的就是提高軟件的可維護(hù)性,降低維護(hù)代價(jià)。6個(gè)活動(dòng)階段:可行性研究與計(jì)劃制定:確定系統(tǒng)的總體目標(biāo)。參加人員有用戶、項(xiàng)目負(fù)責(zé)人和系統(tǒng)分析員,產(chǎn)生文檔有可行性分析報(bào)告、項(xiàng)目計(jì)劃書(shū)等。需求分析:確定系統(tǒng)的邏輯模型。參加人員有用戶、項(xiàng)目負(fù)責(zé)人和系統(tǒng)分析員。產(chǎn)生文檔為需求規(guī)格說(shuō)明書(shū),其作用:(1)便于用戶、開(kāi)發(fā)人員進(jìn)行理解交流;(2)反映用戶問(wèn)題的結(jié)構(gòu),可以作為軟件開(kāi)發(fā)工作的基礎(chǔ)和依據(jù);(3)作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)。軟件設(shè)計(jì)(分概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)):包括軟件結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)和過(guò)程設(shè)計(jì)。其中結(jié)構(gòu)設(shè)計(jì)是定義軟件系統(tǒng)各部件之間的關(guān)系;數(shù)據(jù)設(shè)計(jì)是將分析時(shí)創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義;接口設(shè)計(jì)是描述軟件內(nèi)部、軟件和操作系統(tǒng)之間及軟件與人之間如何通信;過(guò)程設(shè)計(jì)則是把系統(tǒng)結(jié)構(gòu)部件轉(zhuǎn)換成軟件的過(guò)程性描述。參加人員有系統(tǒng)分析員和高級(jí)程序員。產(chǎn)生的文檔有設(shè)計(jì)規(guī)格說(shuō)明書(shū)。編碼(實(shí)現(xiàn)):編程。高級(jí)程序員和程序員產(chǎn)生源程序清單。軟件測(cè)試:由另一部門(mén)的高級(jí)程序員或系統(tǒng)分析員產(chǎn)生軟件測(cè)試計(jì)劃和軟件測(cè)試報(bào)告。運(yùn)行維護(hù)

軟件工程三要素方法:完成軟件工程項(xiàng)目的技術(shù)手段。工具:支持軟件的開(kāi)發(fā)、管理、文檔生成。過(guò)程:支持軟件開(kāi)發(fā)的各個(gè)環(huán)節(jié)的控制、管理。

軟件工程的理論和技術(shù)研究的內(nèi)容軟件開(kāi)發(fā)技術(shù)和軟件工程管理。軟件工具和軟件開(kāi)發(fā)環(huán)境 軟件工具(CASE):用來(lái)輔助軟件開(kāi)發(fā)、運(yùn)行、維護(hù)、管理、支持等過(guò)程中的活動(dòng)的軟件。 軟件開(kāi)發(fā)環(huán)境:支持軟件產(chǎn)品開(kāi)發(fā)的軟件系統(tǒng),它由軟件工具集和環(huán)境集成機(jī)制構(gòu)成139

軟件工程的目標(biāo)在給定的成本、進(jìn)度的前提下,開(kāi)發(fā)出具有有效性、可靠性、可理解性、可維護(hù)性、可適應(yīng)性、可移植性、可追蹤性和可互操作性且滿足用戶需求的產(chǎn)品。軟件工程鼓勵(lì)研制和采用各種先進(jìn)的軟件開(kāi)發(fā)方法、工具和環(huán)境。軟件工程基礎(chǔ)140(二)結(jié)構(gòu)化分析方法

軟件工程基礎(chǔ)基本思想將系統(tǒng)分析看成工程項(xiàng)目,有計(jì)劃、有步驟地進(jìn)行工作。開(kāi)發(fā)策略自頂向下,逐層分解分析結(jié)果一套分層的數(shù)據(jù)流圖(DFD):用來(lái)描述數(shù)據(jù)流從輸入到輸出的變換流程一個(gè)數(shù)據(jù)字典(DD):用來(lái)描述DFD中的每個(gè)數(shù)據(jù)流、文件以及組成數(shù)據(jù)流或文件的數(shù)據(jù)項(xiàng)(打開(kāi)實(shí)例)一組小說(shuō)明(加工邏輯說(shuō)明):用來(lái)描述每個(gè)基本加工的加工邏輯分層數(shù)據(jù)流圖141(三)結(jié)構(gòu)化設(shè)計(jì)方法、總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)

軟件工程基礎(chǔ)結(jié)構(gòu)化設(shè)計(jì)方法

結(jié)構(gòu)圖:

基本成分:模塊、調(diào)用、輸入輸出數(shù)據(jù)模塊用矩形表示,模塊間用線段連接,表示調(diào)用關(guān)系,輸入輸出數(shù)據(jù)可寫(xiě)在調(diào)用線段的旁邊

信息流的類(lèi)型

變換流事務(wù)流142總體設(shè)計(jì)設(shè)計(jì)原則分解—協(xié)調(diào)原則自頂向下的原則信息屏蔽、抽象的原則一致性原則明確性原則模塊間的耦合度盡可能小,模塊內(nèi)部組合盡可能緊湊(內(nèi)聚性高)模塊的扇入和扇出系數(shù)合理模塊的規(guī)模適當(dāng)143詳細(xì)設(shè)計(jì)根本目標(biāo):

確定應(yīng)用怎樣具體的實(shí)現(xiàn)所要求的系統(tǒng),不是具體的編寫(xiě)程序,而是要設(shè)計(jì)程序的“藍(lán)圖”自頂向下的原則。此階段的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。包括內(nèi)容:代碼設(shè)計(jì)輸入設(shè)計(jì)輸出設(shè)計(jì)處理過(guò)程設(shè)計(jì)用戶界面設(shè)計(jì)安全控制設(shè)計(jì)144(四)軟件測(cè)試

軟件工程基礎(chǔ)

意義目的為了發(fā)現(xiàn)錯(cuò)誤;希望能以最少的人力和時(shí)間發(fā)現(xiàn)潛在的各種錯(cuò)誤和缺陷;保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵步驟。

測(cè)試方法人工測(cè)試;機(jī)器測(cè)試。提問(wèn):測(cè)試能否發(fā)現(xiàn)程序中的所有錯(cuò)誤?答案:不能。

白盒測(cè)試結(jié)構(gòu)測(cè)試將軟件看成透明的白盒,根據(jù)程序的內(nèi)部結(jié)構(gòu)和邏輯結(jié)構(gòu)來(lái)設(shè)計(jì)測(cè)試?yán)?,?duì)程序的路徑和過(guò)程進(jìn)行測(cè)試,檢查是否滿足設(shè)計(jì)的要求

黑盒測(cè)試功能測(cè)試將軟件看成黑盒子,在完全不考慮軟件內(nèi)部結(jié)構(gòu)和特性的情況下,測(cè)試軟件的外部特性

軟件測(cè)試的實(shí)施單元測(cè)試(模塊測(cè)試):白盒測(cè)試法組裝測(cè)試(集成測(cè)試):主要發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤確認(rèn)測(cè)試:檢查軟件產(chǎn)品是否符合需求定義,黑盒測(cè)試法系統(tǒng)測(cè)試:軟件做為一個(gè)整體在實(shí)際計(jì)算機(jī)中運(yùn)行是否正常146適合于黑盒測(cè)試的測(cè)試方案:等價(jià)類(lèi)劃分、邊界值分析法和錯(cuò)誤推測(cè)法三種。適合于白盒測(cè)試的測(cè)試方案:主要有邏輯覆蓋法。邏輯覆蓋法包括:語(yǔ)句覆蓋、判定覆蓋(也稱為分支覆蓋)、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。軟件工程基礎(chǔ)147(五)程序調(diào)試

軟件工程基礎(chǔ)

任務(wù)根據(jù)測(cè)試時(shí)發(fā)現(xiàn)的錯(cuò)誤,找出原因和具體的位置,進(jìn)行改正由程序開(kāi)發(fā)人員來(lái)進(jìn)行,誰(shuí)開(kāi)發(fā)的程序就由誰(shuí)來(lái)進(jìn)行調(diào)試方法:

強(qiáng)行排錯(cuò)法(設(shè)置斷點(diǎn)、程序暫停、觀察程序狀態(tài))

回溯法(從錯(cuò)誤征兆確定錯(cuò)誤最先出現(xiàn)位置,回找到錯(cuò)誤)

原因排除法(演繹、歸納、二分法)148

靜態(tài)調(diào)試通過(guò)人的思維來(lái)分析源程序代碼和排錯(cuò),是主要的調(diào)試手段。動(dòng)態(tài)調(diào)試輔助靜態(tài)調(diào)試。軟件工程基礎(chǔ)149(六)例題講解

為了提高測(cè)試的效率,應(yīng)該(D)

A)隨機(jī)選取測(cè)試數(shù)據(jù)

B)取一切可能的輸入數(shù)據(jù)作為測(cè)試數(shù)據(jù)

C)在完成編碼以后制定軟件的測(cè)試計(jì)劃

D)選擇發(fā)現(xiàn)錯(cuò)誤可能性大的數(shù)據(jù)作為測(cè)試數(shù)據(jù)軟件生命周期中所花費(fèi)用最多的階段是(D)

A)詳細(xì)設(shè)計(jì) B)軟件編碼C)軟件測(cè)試D)軟件維護(hù)軟件工程基礎(chǔ)√

下列敘述中,不屬于軟件需求規(guī)格說(shuō)明書(shū)的作用的是(D)

A)便于用戶、開(kāi)發(fā)人員進(jìn)行理解和交流

B)反映出用戶問(wèn)題的結(jié)構(gòu),可以作為軟件開(kāi)發(fā)工作的基礎(chǔ)和依據(jù)

C)作為確認(rèn)測(cè)試和驗(yàn)收的依據(jù)

D)便于開(kāi)發(fā)人員進(jìn)行需求分析下列不屬于軟件工程的3個(gè)要素的是(D)A)工具 B)過(guò)程C)方法D)環(huán)境√

151檢查軟件產(chǎn)品是否符合需求定義的過(guò)程稱為(A)

A)確認(rèn)測(cè)試B)集成測(cè)試C)驗(yàn)證測(cè)試D)驗(yàn)收測(cè)試數(shù)據(jù)流圖用于抽象描述一個(gè)軟件的邏輯模型,數(shù)據(jù)流圖由一些特定的圖符構(gòu)成。下列圖符名標(biāo)識(shí)的圖符不屬于數(shù)據(jù)流圖合法圖符的是(A)

A)控制流 B)加工C)數(shù)據(jù)存儲(chǔ) D)源和流(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)外實(shí)體)開(kāi)發(fā)軟件所需高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象稱作(B)

A)軟件投機(jī)B)軟件危機(jī)

C)軟件工程D)軟件產(chǎn)生√

152開(kāi)發(fā)大型軟件時(shí),產(chǎn)生困難的根本原因是(A)

A)大系統(tǒng)的復(fù)雜性

B)人員知識(shí)不足

C)客觀世界千變?nèi)f化 D)時(shí)間緊、任務(wù)重軟件工程的出現(xiàn)是由于(C)

A)程序設(shè)計(jì)方法學(xué)的影響 B)軟件產(chǎn)業(yè)化的需要

C)軟件危機(jī)的出現(xiàn) D)計(jì)算機(jī)的發(fā)展153軟件開(kāi)發(fā)離不開(kāi)系統(tǒng)環(huán)境資源的支持,其中必要的測(cè)試數(shù)據(jù)屬于(D)

A)硬件資源 B)通信資源

C)支持軟件D)輔助資源在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示(D)

A)模塊之間的調(diào)用關(guān)系B)程

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論