二級公共基礎知識數(shù)據(jù)結構與算法演示文稿_第1頁
二級公共基礎知識數(shù)據(jù)結構與算法演示文稿_第2頁
二級公共基礎知識數(shù)據(jù)結構與算法演示文稿_第3頁
二級公共基礎知識數(shù)據(jù)結構與算法演示文稿_第4頁
二級公共基礎知識數(shù)據(jù)結構與算法演示文稿_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

二級公共基礎知識數(shù)據(jù)結構與算法演示文稿本文檔共108頁;當前第1頁;編輯于星期一\9點3分二級公共基礎知識數(shù)據(jù)結構與算法本文檔共108頁;當前第2頁;編輯于星期一\9點3分考試形式1、公共基本知識部份只考選擇題,沒有操作題。2、公共基本知識占10分,共10道題,每題1分。本文檔共108頁;當前第3頁;編輯于星期一\9點3分注意事項公共基礎知識部份的內容是屬于計算機專業(yè)本科生的專業(yè)課,知識點特別散,而且有一定的難度。所以考生在學習的過程中,一定要克服畏難情緒,跟上老師的節(jié)奏。老師讓記的,要記住。沒做要求的,要學會放棄。放棄該放棄的,選擇輕裝上陣本文檔共108頁;當前第4頁;編輯于星期一\9點3分一、數(shù)據(jù)結構與算法

1.算法的基本概念;算法復雜度的概念和意義(時間復雜度與空間復雜度)。2.數(shù)據(jù)結構的定義;數(shù)據(jù)的邏輯結構與存儲結構;數(shù)據(jù)結構的圖形表示;線性結構與非線性結構的概念。3.線性表的定義;線性表的順序存儲結構及其插入與刪除運算。4.棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算。5.線性單鏈表、雙向鏈表與循環(huán)鏈表的結構及其基本運算。6.樹的基本概念;二叉樹的定義及其存儲結構;二叉樹的前序、中序和后序遍歷。7.順序查找與二分法查找算法;基本排序算法(交換類排序,插入類排序,選擇類排序)。

本文檔共108頁;當前第5頁;編輯于星期一\9點3分1.1算法1.1.1算法(algorithm)基本概念

它是指令的有限序列,其中每一條指令表示一個或多個操作。對解題方案準確而完整的描述稱為算法。算法計算機解題的過程實際上是在實施某種算法,這種算法稱為計算機算法。本文檔共108頁;當前第6頁;編輯于星期一\9點3分算法的基本特征:(1)有窮性(2)確定性(3)可行性(4)擁有足夠的情報(有零個或多個輸入,有一個或多個輸出)一個算法有零個或多個輸入,以刻畫運算對象的初始情況,所謂零個輸入是指算法本身定出了初始條件;一個算法有一個或多個輸出,以反映對輸入數(shù)據(jù)加工后的結果。沒有輸出的算法是毫無意義的;本文檔共108頁;當前第7頁;編輯于星期一\9點3分偽代碼:S1:輸入圓的半徑R;S2:求面積∏R2;S3:輸出面積;例1:已知圓的半徑,求圓的面積.描述算法的工具通常有傳統(tǒng)流程圖、N-S結構化流程圖、偽代碼等。開始輸入RS=3.14*

R*R輸出S結束傳統(tǒng)流程圖本文檔共108頁;當前第8頁;編輯于星期一\9點3分第9頁算法與計算機程序算法——是一組邏輯步驟程序——用計算機語言描述的算法算法不等于程序,也不等于計算方法,程序的編制不可能優(yōu)于算法的設計。算法是程序設計的核心本文檔共108頁;當前第9頁;編輯于星期一\9點3分算法:S1:輸入圓的半徑R;S2:求面積∏R2;S3:輸出面積;例題:已知圓的半徑,求圓的面積.程序#include<stdio.h>#definePI3.14159intmain(){floatr,s;do{printf("Pleaseinputr:");scanf("%f",&r);if(r<0)printf("Error!\n");}while(r<=0);s=PI*r*r;printf("Area=%f\n",s);return0;}本文檔共108頁;當前第10頁;編輯于星期一\9點3分1.1.2算法的基本要素

1、對數(shù)據(jù)對象的運算和操作算術運算邏輯運算關系運算數(shù)據(jù)傳輸2、算法的控制結構算法中各操作之間的執(zhí)行順序一個算法一般可以用順序、選擇、循環(huán)3種基本結構組合而成。本文檔共108頁;當前第11頁;編輯于星期一\9點3分算術運算邏輯運算關系運算數(shù)據(jù)傳輸順序、選擇、循環(huán)3種基本結構#include<stdio.h>#definePI3.14159intmain(){floatR,S;do{printf("PleaseinputR:");scanf("%f",&R);if(R<0)printf("Error!\n");}while(R<=0);s=PI*R*R;printf("Area=%f\n",S);return0;}本文檔共108頁;當前第12頁;編輯于星期一\9點3分1.1.3算法設計基本方法列舉法歸納法遞推遞歸(以簡潔的形式設計和描述算法)減半遞推技術回溯法本文檔共108頁;當前第13頁;編輯于星期一\9點3分1.2算法復雜度1.2.1時間復雜度是指執(zhí)行算法所需要的計算工作量。通常有事后統(tǒng)計法和事前分析估算法?!锼惴ǖ墓ぷ髁坑盟惴ㄋ鶊?zhí)行的基本運算次數(shù)來度量.★算法所執(zhí)行的基本運算次數(shù)與問題的規(guī)模n有關(即算法所執(zhí)行的基本次數(shù)是問題規(guī)模的函數(shù)).執(zhí)行算法所需要的計算工作量和f(n)同步增長,記為:算法的工作量=f(n)時間復雜度=O(f(n))而對于一個固定的規(guī)模,算法所執(zhí)行的基本次數(shù)還與特定的輸入有關。本文檔共108頁;當前第14頁;編輯于星期一\9點3分例子4:for(i=2;i<=n;++i)for(j=2;j<=i-1;++j)++x;基本運算:基本運算的執(zhí)行次數(shù):X增1i=20i=31i=42…i=nn-21+2+3+…+(n-2)=(n-1)(n-2)/2O()例子2:++x;O(1)例子3:for(i=1;i<=n;++i)++x;O(n)時間復雜度:O((n*n-3n+2)/2)基本運算:基本運算的執(zhí)行次數(shù):時間復雜度:1X增1基本運算:基本運算的執(zhí)行次數(shù):時間復雜度:X增1n本文檔共108頁;當前第15頁;編輯于星期一\9點3分1.2.2算法的空間復雜度一般是指執(zhí)行這個算法所需要的內存空間一個算法所占用的內存空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法在執(zhí)行過程中所需要的額外空間這3部分。本文檔共108頁;當前第16頁;編輯于星期一\9點3分

算法的時間復雜度是指A)執(zhí)行算法程序所需要的時間B)算法程序的長度C)算法執(zhí)行過程中所需要的基本運算次數(shù)D)算法程序中的指令條數(shù)算法的基本特征是可行性、確定性、

【1】和擁有足夠的情報。算法的空間復雜度是指

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

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

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

C)排序方法 D)查詢方法例題講解有窮性本文檔共108頁;當前第17頁;編輯于星期一\9點3分算法分析的目的是

A)找出數(shù)據(jù)結構的合理性B)找出算法中輸入和輸出之間的關系

C)分析算法的易懂性和可靠性 D)分析算法的效率以求改進算法的工作量大小和實現(xiàn)算法所需的存儲單元多少分別稱為算法的【1】。時間復雜度和空間復雜度本文檔共108頁;當前第18頁;編輯于星期一\9點3分1.2數(shù)據(jù)結構數(shù)據(jù)結構的定義數(shù)據(jù)的邏輯結構和存儲結構數(shù)據(jù)結構的圖形表示線性結構與非線性結構本文檔共108頁;當前第19頁;編輯于星期一\9點3分能輸入到計算機中并能被計算機程序處理的符號的集合。整數(shù)(1,2)、實數(shù)(1.1,1.2)字符串(Beijing)、圖形、聲音。1.2.2基本概念和術語

數(shù)據(jù)結構是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學科。本文檔共108頁;當前第20頁;編輯于星期一\9點3分計算機管理圖書問題

在圖書館里有各種卡片:有按書名編排的、有按作者編排的、有按分類編排如何將查詢圖書的這些信息存入計算機中既要考慮查詢時間短,又要考慮節(jié)省空間

數(shù)據(jù)結構是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學科。最簡單的辦法之一是建立一張表,每一本書的信息在表中占一行,如本文檔共108頁;當前第21頁;編輯于星期一\9點3分如何將0,1,2,3,4,5,6,7,8,9這10個數(shù)存放在計算機中能最快地達到你所需要的目的?目的不同,最佳的存儲方方法就不同。從大到小排列:9,8,7,6,5,4,3,2,1,0輸出偶數(shù):0,2,4,6,8,1,3,5,7,9數(shù)據(jù)元素在計算機中的表示

數(shù)據(jù)結構是一門研究數(shù)據(jù)組織、存儲和運算的一般方法的學科。對數(shù)據(jù)結構中的節(jié)點進行操作處理(插入、刪除、修改、查找、排序)本文檔共108頁;當前第22頁;編輯于星期一\9點3分1.數(shù)據(jù)的邏輯結構2、數(shù)據(jù)的存儲結構3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結構B.非線性結構A順序存儲B鏈式存儲線性表棧隊樹形結構圖形結構數(shù)據(jù)結構的三個方面本文檔共108頁;當前第23頁;編輯于星期一\9點3分數(shù)據(jù)結構可描述為Group=(D,R)1.數(shù)據(jù)的邏輯結構:是指反映數(shù)據(jù)元素之間邏輯關系的數(shù)據(jù)結構。它包括數(shù)據(jù)元素的集合和數(shù)據(jù)元素之間的前后關系兩個因素。有限個數(shù)據(jù)元素的集合有限個數(shù)據(jù)元素間關系的集合數(shù)據(jù)的邏輯結構簡稱數(shù)據(jù)結構。本文檔共108頁;當前第24頁;編輯于星期一\9點3分數(shù)據(jù)元素(DataElement)

數(shù)據(jù)元素是數(shù)據(jù)的基本單位,即數(shù)據(jù)集合中的個體。有時一個數(shù)據(jù)元素可由若干數(shù)據(jù)項(DataItem)組成。數(shù)據(jù)項是數(shù)據(jù)的最小單位。數(shù)據(jù)元素亦稱結點或記錄。本文檔共108頁;當前第25頁;編輯于星期一\9點3分線性樹圖常用數(shù)據(jù)結構:本文檔共108頁;當前第26頁;編輯于星期一\9點3分A.線性結構(A,B,C,·······,X,Y,Z)例:學生成績表86胡孝臣986110395劉忠賞9861107100張卓9861109成績姓名學號①線性表②?!筮M先出③隊列——先進先出例:英文字母表本文檔共108頁;當前第27頁;編輯于星期一\9點3分數(shù)據(jù)結構S=(D,R)D={春,夏,秋,冬}R={<春,夏>,<夏,秋>,<秋,冬>}什么型的數(shù)據(jù)結構?用圖形工具線性結構數(shù)據(jù)元素:用中間標有元素值的方框表示,稱為結點邏輯關系:用有向線段從前件指向后件(不引起誤會情況下,箭頭可以省去)冬春夏秋本文檔共108頁;當前第28頁;編輯于星期一\9點3分①樹形結構例:家庭成員數(shù)據(jù)結構可表示成例:計算機文件管理系統(tǒng)也是典型的樹形結構B.非線性結構父親兒子女兒沒有前件的結點稱為根結點;沒有后件的結點稱為終端結點(葉子結點)本文檔共108頁;當前第29頁;編輯于星期一\9點3分1423

例:數(shù)據(jù)結構B(D,R)D={1,2,3,4}R={(1,2),(1,3),(1,4),(2,3),(3,4),(2,4)}213例:數(shù)據(jù)結構C(D,R)D={1,2,3}R={<1,2>,<2,3>,<3,2>,<1,3>}

②圖形結構本文檔共108頁;當前第30頁;編輯于星期一\9點3分元素n……..元素i……..元素2元素1LoLo+mLo+(i-1)*mLo+(n-1)*m存儲地址存儲內容Loc(ai)=Lo+(i-1)*m1、順序存儲每個元素所占用的存儲單元個數(shù)(3)存儲結構本文檔共108頁;當前第31頁;編輯于星期一\9點3分例:線性表(zhao,qian,sun,li,zhou,wu,zheng,wang)

順序存儲結構:存儲地址數(shù)據(jù)7891011121314zhaoqiansunlizhouwuzhengwang7基地址順序存儲結構,將邏輯上相鄰的數(shù)據(jù)元素存儲在物理上相鄰的存儲單元里,具有以下特點:1.隨機存取。2.作插入或刪除操作時,需移動大量元數(shù)。3.長度變化較大時,需按最大空間分配。4.表的容量難以擴充。本文檔共108頁;當前第32頁;編輯于星期一\9點3分2、鏈式存儲每個節(jié)點都由兩部分組成:

數(shù)據(jù)域和指針域。數(shù)據(jù)域存放元素本身的數(shù)據(jù),指針域存放指針。數(shù)據(jù)元素之間邏輯上的聯(lián)系由指針來體現(xiàn)。例:線性表(zhao,qian,sun,li,zhou,wu,zheng,wang)鏈式存儲結構:存儲地址數(shù)據(jù)17131925313743liqiansunwangwuzhaozhengzhou指針43131null377192531頭指針本文檔共108頁;當前第33頁;編輯于星期一\9點3分通常我們把鏈表畫成用箭頭相鏈接的結點的序列,結點之間的箭頭表示鏈域中的指針。zhaoqiansunlizhouwuzhengwang/H存儲地址數(shù)據(jù)17131925313743liqiansunwangwuzhaozhengzhou指針43131null377192531頭指針本文檔共108頁;當前第34頁;編輯于星期一\9點3分1.比順序存儲結構多用空間(存儲密度小)(每個節(jié)點都由數(shù)據(jù)域和指針域組成)。2.邏輯上相鄰的節(jié)點物理上不必相鄰。3.插入、刪除靈活

(不必移動節(jié)點,只要改變節(jié)點中的指針)。4.非隨機存取。鏈接存儲結構特點:本文檔共108頁;當前第35頁;編輯于星期一\9點3分1.數(shù)據(jù)的邏輯結構2、數(shù)據(jù)的存儲結構3、數(shù)據(jù)的運算:檢索、排序、插入、刪除、修改等。A.線性結構B.非線性結構A順序存儲B鏈式存儲線性表棧隊樹形結構圖形結構數(shù)據(jù)結構的三個方面(亦稱物理結構)……本文檔共108頁;當前第36頁;編輯于星期一\9點3分鏈表不具有的特點是A)不必事先估計存儲空間B)可隨機訪問任一元素C)插入刪除不需要移動元素 D)所需空間與線性表長度成正比數(shù)據(jù)結構分為邏輯結構與存儲結構,線性鏈表屬于【1】

。數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的

A)存儲結構 B)物理結構

C)邏輯結構 D)物理和存儲結構數(shù)據(jù)的邏輯結構有線性結構和【1】

兩大類。數(shù)據(jù)的存儲結構是指A)數(shù)據(jù)所占的存儲空間B)數(shù)據(jù)的邏輯結構在計算機中的表示C)數(shù)據(jù)在計算機中的順序存儲方式D)存儲在外存中的數(shù)據(jù)例題講解存儲結構非線性結構本文檔共108頁;當前第37頁;編輯于星期一\9點3分順序存儲方法是把邏輯上相鄰的結點存儲在物理位置

【2】的存儲單元中。

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

A)數(shù)據(jù) B)數(shù)據(jù)元素C)數(shù)據(jù)項 D)數(shù)據(jù)結構數(shù)據(jù)結構作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結構、對各種數(shù)據(jù)結構進行的運算,以及

A)數(shù)據(jù)的存儲結構 B)計算方法C)數(shù)據(jù)映象D)邏輯存儲線性表的順序存儲結構和線性表的鏈式存儲結構分別是

A)順序存取的存儲結構、順序存取的存儲結構

B)隨機存取的存儲結構、順序存取的存儲結構

C)隨機存取的存儲結構、隨機存取的存儲結構

D)任意存取的存儲結構、任意存取的存儲結構

相鄰本文檔共108頁;當前第38頁;編輯于星期一\9點3分根據(jù)數(shù)據(jù)結構中各數(shù)據(jù)元素之間前后件關系的復雜程度,一般將數(shù)據(jù)結構分成

A)動態(tài)結構和靜態(tài)結構 B)緊湊結構和非緊湊結構

C)線性結構和非線性結構D)內部結構和外部結構數(shù)據(jù)結構包括數(shù)據(jù)的邏輯結構、數(shù)據(jù)的

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

【5】。下列敘述中,錯誤的是

A)數(shù)據(jù)的存儲結構與數(shù)據(jù)處理的效率密切相關

B)數(shù)據(jù)的存儲結構與數(shù)據(jù)處理的效率無關

C)數(shù)據(jù)的存儲結構在計算機中所占的空間不一定是連續(xù)的

D)一種數(shù)據(jù)的邏輯結構可以有多種存儲結構存儲結構數(shù)據(jù)元素本文檔共108頁;當前第39頁;編輯于星期一\9點3分1.3線性表1.3.1線性表的概念線性表的定義:

線性表是n個元素的有限序列,它們之間的關系可以排成一個線性序列:

(a1,a2,……

,ai,……

,an)

其中n稱作表的長度,當n=0時,稱作空表。線性表的特點:1.線性表中所有元素的性質相同。2.除第一個和最后一個數(shù)據(jù)元素之外,其它數(shù)據(jù)元素有且僅有一個前驅和一個后繼.第一個數(shù)據(jù)元素無前驅,最后一個數(shù)據(jù)元素無后繼。3.數(shù)據(jù)元素在表中的位置只取決于它自身的序號。在線性表上常用的運算有:初始化、求長度、取元素、修改、前插、刪除、查找、排序。本文檔共108頁;當前第40頁;編輯于星期一\9點3分1.4線性表的順序存儲結構及其插入與刪除操作特點:

1.線性表中數(shù)據(jù)元素類型一致,只有數(shù)據(jù)域,存儲空間利用率高。

2.所有元素所占的存儲空間是連續(xù)的

3.各數(shù)據(jù)元素在存儲空間中是按邏輯順序依次存放的

4.做插入、刪除時需移動大量元素。

5.空間估計不明時,按最大空間分配。

順序存儲結構:存儲地址數(shù)據(jù)7891011121314zhaoqiansunlizhouwuzhengwang7基地址本文檔共108頁;當前第41頁;編輯于星期一\9點3分元素an……..元素ai……..元素a2元素a1bb+mb+(i-1)*mb+(maxlen-1)*m存儲地址內存狀態(tài)Loc(元素i)=b+(i-1)*m順序存儲結構示意圖(順序表):首地址起始地址基地址每個元素所占用的存儲單元個數(shù)本文檔共108頁;當前第42頁;編輯于星期一\9點3分1-1插入運算ai-1…..a2a1alength…ai+1aixai-1…..a2a1alength…ai+1aiX插入算法的分析:

假設線性表中含有n個數(shù)據(jù)元素,在進行插入操作時,若假定在n+1個位置上插入元素的可能性均等,則平均移動元素的個數(shù)為:本文檔共108頁;當前第43頁;編輯于星期一\9點3分1-2刪除運算ai-1…..a2a1alength…ai+1aiai-1…..a2a1alength…ai+1刪除算法的分析:

在進行刪除操作時,若假定刪除每個元素的可能性均等,則平均移動元素的個數(shù)為:總結:

順序存儲結構表示的線性表,在做插入或刪除操作時,平均需要移動大約一半的數(shù)據(jù)元素。當線性表的數(shù)據(jù)元素量較大,并且經(jīng)常要對其做插入或刪除操作時,這一點需要值得考慮。本文檔共108頁;當前第44頁;編輯于星期一\9點3分鏈表不具有的特點是A)不必事先估計存儲空間B)可隨機訪問任一元素C)插入刪除不需要移動元素 D)所需空間與線性表長度成正比順序存儲方法是把邏輯上相鄰的結點存儲在物理位置

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

。線性表若采用順序存儲結構時,要求內存中可用存儲單元的地址

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

C)一定是不連續(xù)的D)連續(xù)不連續(xù)都可以例題講解相鄰本文檔共108頁;當前第45頁;編輯于星期一\9點3分線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是

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

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

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

D)除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件線性表的順序存儲結構和線性表的鏈式存儲結構分別是

A)順序存取的存儲結構、順序存取的存儲結構

B)隨機存取的存儲結構、順序存取的存儲結構

C)隨機存取的存儲結構、隨機存取的存儲結構

D)任意存取的存儲結構、任意存取的存儲結構下列敘述中,錯誤的是

A)數(shù)據(jù)的存儲結構與數(shù)據(jù)處理的效率密切相關

B)數(shù)據(jù)的存儲結構與數(shù)據(jù)處理的效率無關

C)數(shù)據(jù)的存儲結構在計算機中所占的空間不一定是連續(xù)的

D)一種數(shù)據(jù)的邏輯結構可以有多種存儲結構

本文檔共108頁;當前第46頁;編輯于星期一\9點3分根據(jù)數(shù)據(jù)結構中各數(shù)據(jù)元素之間前后件關系的復雜程度,一般將數(shù)據(jù)結構分成

A)動態(tài)結構和靜態(tài)結構 B)緊湊結構和非緊湊結構

C)線性結構和非線性結構D)內部結構和外部結構當線性表采用順序存儲結構實現(xiàn)存儲時,其主要特點是【1】

。隨機存取本文檔共108頁;當前第47頁;編輯于星期一\9點3分1.5線性表的鏈式存儲結構及其插入與刪除操作zhaoqiansunlizhouwuzhengwang/H存儲地址數(shù)據(jù)17131925313743liqiansunwangwuzhaozhengzhou指針43131null377192531頭指針單鏈表本文檔共108頁;當前第48頁;編輯于星期一\9點3分baPbaP1-1單鏈表的插入運算xS在P所指向的結點之后插入新的結點1-2單鏈表刪除運算La…aian^…ai-1ai+1要求:刪除結點ai。本文檔共108頁;當前第49頁;編輯于星期一\9點3分1-3.循環(huán)鏈表:

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

可以從任何一個結點開始訪問鏈表的所有結點.本文檔共108頁;當前第50頁;編輯于星期一\9點3分1-4雙向鏈表在每個結點中設置兩個指針,一個指向后繼,一個指向前驅。可直接確定一個結點的前驅和后繼結點。可提高效率。datanextbefore本文檔共108頁;當前第51頁;編輯于星期一\9點3分鏈表不具有的特點是A)不必事先估計存儲空間B)可隨機訪問任一元素C)插入刪除不需要移動元素D)所需空間與線性表長度成正比用鏈表表示線性表的優(yōu)點是A)便于隨機存取B)花費的存儲空間較順序存儲少C)便于插入和刪除操作D)數(shù)據(jù)元素的物理順序與邏輯順序相同長度為n的順序存儲線性表中,當在任何位置上插入一個元素概率都相等時,插入一個元素所需移動元素的平均個數(shù)為【1】

。在單鏈表中,增加頭結點的目的是

A)方便運算的實現(xiàn)B)使單鏈表至少有一個結點

C)標識表結點中首結點的位置

D)說明單鏈表是線性表的鏈式存儲實現(xiàn)例題講解本文檔共108頁;當前第52頁;編輯于星期一\9點3分非空的循環(huán)單鏈表head的尾結點(由p所指向),滿足

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

A)不再需要頭指針了

B)從表中任一結點出發(fā)都能訪問到整個鏈表

C)在進行插入、刪除運算時,能更好的保證鏈表不斷開

D)已知某個結點的位置后,能夠容易的找到它的直接前件當循環(huán)隊列非空且隊尾指針等于隊頭指針時,說明循環(huán)隊列已滿,不能進行入隊運算。這種情況稱為【2】。用鏈表表示線性表的突出優(yōu)點是【1】。上溢插入、刪除靈活本文檔共108頁;當前第53頁;編輯于星期一\9點3分1.6棧和隊列1.6.1棧和隊列的定義棧和隊列是兩種特殊的線性表,它們是運算時要受到某些限制的線性表,故也稱為限定性的數(shù)據(jù)結構。本文檔共108頁;當前第54頁;編輯于星期一\9點3分1.棧?!窍薅▋H在表尾進行插入或刪除操作的線性表。棧頂——表尾。棧底——表頭。空?!缓氐目毡怼!璦1a2an棧底棧頂進棧出棧棧s=(a1,a2,…,an)后進先出(LIFO)本文檔共108頁;當前第55頁;編輯于星期一\9點3分2.棧的順序存儲結構及其基本運算a2a1a1a2top

用順序存儲結構表示的棧:

順序棧用一組連續(xù)的存儲單元存放自棧底到棧頂?shù)臄?shù)據(jù)元素,一般用一維數(shù)組表示,設置一個簡單變量top指示棧頂位置,稱為棧頂指針,它始終指向待插入元素的位置?;具\算:壓(進)棧:PUSH出棧:POP讀棧頂元素:gettop本文檔共108頁;當前第56頁;編輯于星期一\9點3分例子:topbaseEDCBAtopbaseCBAbasetopAbasetop空桟:top=base非空桟:top始終在桟頂元素的后一個位置桟的元素個數(shù):top-base上溢下溢本文檔共108頁;當前第57頁;編輯于星期一\9點3分3.隊列定義:一種特殊的線性結構,限定只能在表的一端進行插入,在表的另一端進行刪除的線性表。此種結構稱為先進先出(FIFO)表。a1,

a2,

a3,

a4,…………

an-1,

an

隊列示意圖隊頭隊尾本文檔共108頁;當前第58頁;編輯于星期一\9點3分e3e4(c)e1,e2出隊,e4入隊

隊滿rear=3fronte1e2e3

(b)rearfront(b)e1,e2,e3入隊4.隊列的順序存儲結構及其基本運算

3210(a)rear=front=-1(隊空)rearfront空隊列:非空隊列:隊列元素個數(shù):rear=front=-1front始終指向隊頭元素前一個位置,而rear始終指向隊尾元素的位置rear-front本文檔共108頁;當前第59頁;編輯于星期一\9點3分循環(huán)隊列基本思想:把隊列設想為一個循環(huán)的表,臆想elem[0]接在elem[maxsize-1]之后.……frontrearMaxsize-101e3e4

rear=3front本文檔共108頁;當前第60頁;編輯于星期一\9點3分0012345frontABCDEFrear上溢0012345frontrear下溢front=rear隊滿front=rear隊空本文檔共108頁;當前第61頁;編輯于星期一\9點3分棧和隊列的共同特點是

A)都是先進先出B)都是先進后出

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

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

A)棧 B)堆C)數(shù)組 D)鏈表例題講解本文檔共108頁;當前第62頁;編輯于星期一\9點3分棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A)ABCED B)DCBEAC)DBCEA D)CDABE棧通常采用的兩種存儲結構是

A)線性存儲結構和鏈表存儲結構 B)散列方式和索引方式

C)鏈表存儲結構和數(shù)組D)線性存儲結構和非線性存儲結構棧和隊列通常采用的存儲結構是【1】

。下列數(shù)據(jù)結構中,按先進后出原則組織數(shù)據(jù)的是

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

【2】。鏈表存儲結構和數(shù)組上溢本文檔共108頁;當前第63頁;編輯于星期一\9點3分由兩個棧共享一個存儲空間的好處是A)減少存取時間,降低下溢發(fā)生的機率B)節(jié)省存儲空間,降低上溢發(fā)生的機率C)減少存取時間,降低上溢發(fā)生的機率D)節(jié)省存儲空間,降低下溢發(fā)生的機率自由區(qū)lefttoprighttop0MAXNUM-1兩個棧共享鄰接空間本文檔共108頁;當前第64頁;編輯于星期一\9點3分下列關于棧的敘述中正確的是A)在棧中只能插入數(shù)據(jù)B)在棧中只能刪除數(shù)據(jù)C)棧是先進先出的線性表D)棧是后進先出的線性表下列關于隊列的敘述中正確的是A)在隊列中只能插入數(shù)據(jù)B)在隊列中只能刪除數(shù)據(jù)C)隊列是先進先出的線性表D)隊列是后進先出的線性表本文檔共108頁;當前第65頁;編輯于星期一\9點3分1.7.1樹的定義由一個或多個結點組成的有限集合。僅有一個根結點,結點間有明顯的層次結構關系。

A

C

GT2D

HIT3J

M

BEL

KT1F現(xiàn)實世界中,能用樹的結構表示的例子:學校的行政關系、書的層次結構、人類的家族血緣關系等。1.7樹本文檔共108頁;當前第66頁;編輯于星期一\9點3分介紹幾個概念:結點(Node):樹中的元素,包含數(shù)據(jù)項及若干指向其子樹的分支。結點的度(Degree):結點擁有的子樹數(shù)。結點的層次:從根結點開始算起,根為第一層。葉子(Leaf):度為零的結點,也稱端結點。孩子(Child):結點子樹的根稱為該結點的孩子結點。兄弟(Sibling):同一雙親的孩子。雙親(Parent):孩子結點的上層結點,稱為這些結點的雙親。樹的深度(Depth):樹中結點的最大層次數(shù)。樹的度:結點所具有的最大的度.森林(Forest):M棵互不相交的樹的集合。

A

C

GD

HI

J

M

BEL

KT1F本文檔共108頁;當前第67頁;編輯于星期一\9點3分1.7.2二叉樹(BinaryTree)1、二叉樹的定義及其性質

(1)二叉樹的定義二叉樹的五種基本形態(tài)

二叉樹一種特殊的樹形結構,特點是樹中每個結點最多只能有兩棵子樹(即二叉樹中不存在度大于2的結點),且子樹有左右之分,次序不能顛倒。

空二叉樹

僅有根結點

右子樹為空

左子樹為空左右子樹均非空本文檔共108頁;當前第68頁;編輯于星期一\9點3分二叉樹是n(n0)個結點的有限集合。它或為空數(shù)(n=0),或由一個根結點和兩棵分別稱為根的左子樹和右子樹的互不相交的二叉樹組成。特別要注意:二叉樹不是一般樹的特殊情況,而是另一種樹形結構.aabb兩棵不同的二叉樹ab一棵樹本文檔共108頁;當前第69頁;編輯于星期一\9點3分性質1:二叉樹的第i層上至多有2i-1(i1)個結點。(2)二叉樹的基本性質423167891011121314155第三層上(i=3),有23-1=4個節(jié)點。第四層上(i=4),有24-1=8個節(jié)點。性質2:深度為k的二叉樹中至多含有2k-1個結點。本文檔共108頁;當前第70頁;編輯于星期一\9點3分性質3:對任何一棵二叉樹T,如果其終端結點數(shù)為n0,度為2的結點數(shù)為n2,則n0=n2+1。證明:設n1為二叉樹T中度為1的結點數(shù);∵二叉樹中所有結點的度均小于或等于2∴其結點總數(shù)為:n=n0+n1+n2∵二叉樹中除了根結點外,其余結點都有一個分支進入設分支總數(shù)為B;則n=B+1;∵二叉樹的分支是由度為1或2的結點射出的∴B=n1+2*n2

∴n=n1+2*n2+1=n0+n1+n2

n0=n2+1ABFCJM一般樹本文檔共108頁;當前第71頁;編輯于星期一\9點3分★滿二叉樹423167891011121314155特點:每一層上都含有最大結點數(shù)?!锿耆鏄?23167891011125特點:(1)除最后一層外,每一層都取最大結點數(shù),(2)最后一層結點都集中在該層最左邊的若干位置。本文檔共108頁;當前第72頁;編輯于星期一\9點3分性質4:具有n個結點的完全二叉樹的深度為112345678910121例:n=2k=2n=6k=3n=7k=3n=8k=4n=12k=4本文檔共108頁;當前第73頁;編輯于星期一\9點3分性質5:如果對一棵有n個結點的完全二叉樹的結點按層序編號,則對任一結點i(1=<i=<n)有:(2)如果2i>n,則結點i無左孩子(結點i為葉子結點);

否則其左孩子Lchild(i)是結點2i。

(3)如果2i+1>n,則結點i無右孩子;

否則其右孩子Rchild(i)是結點2i+1。(1)如果i=1,則結點i是二叉樹的根,無雙親;

如果i>1,則雙親Parent(i)是結點|i/2|。

本文檔共108頁;當前第74頁;編輯于星期一\9點3分例:112345678910121i=6其雙親為|i/2|=3;其左孩子為2*i=12;i=1是樹的根,無雙親;其左孩子為2*i=2,右孩子為2*i+1=3.∵2*i=18>122*i+1=19>12∴其無左、右孩子?!?*i+1=13>12∴其無右孩子。i=9其雙親為|i/2|=

4

;本文檔共108頁;當前第75頁;編輯于星期一\9點3分★樹與二叉樹的區(qū)別A.樹和二叉樹的結點個數(shù)最少都可為0。B.樹中結點的最大度數(shù)沒有限制,二叉樹結點最大度數(shù)為2。C.樹的結點無左、右之分,二叉樹的結點子樹有明確的左、右之分。3個結點的樹3個結點的二叉樹本文檔共108頁;當前第76頁;編輯于星期一\9點3分2、二叉樹的存儲結構

(2)鏈式存儲結構T[16]若父結點在數(shù)組中i下標處,其左孩子在2*i處,右孩子在2*i+1處。11ABcFED

●●●●●●●●●124

8

910563712131415(1)順序存儲結構(1)順序存儲結構2h-1=24-1=15用一組連續(xù)的存儲單元存放二叉樹的數(shù)據(jù)元素。結點在數(shù)組中的相對位置蘊含著結點之間的關系。0000FE000DC0BA15141312111098765432100一般二叉樹必須按完全二叉樹的形式存儲,將造成存儲的浪費。本文檔共108頁;當前第77頁;編輯于星期一\9點3分(2)、鏈式存儲結構鏈式存儲結構二叉鏈表三叉鏈表二叉鏈表:二叉鏈表的結點包含三個域:數(shù)據(jù)域、左、右指針域。例:ABCDEFGA^B^C^D^E^F^^G^本文檔共108頁;當前第78頁;編輯于星期一\9點3分三叉鏈表:三叉鏈表的結點包含四個域:數(shù)據(jù)域、左、右、雙親指針域。例:ABCDEFGA^^B^C^D^E^F^^G^鏈式存儲結構的特點:(1)操作便于實現(xiàn)(2)結構復雜本文檔共108頁;當前第79頁;編輯于星期一\9點3分1.7.3二叉樹的遍歷查找某個結點,或對二叉樹中全部結點進行某種處理,就需要遍歷。(1)遍歷定義及遍歷算法遍歷是指按某條搜索路線尋訪樹中每個結點,且每個結點只被訪問一次。按先左后右的原則,一般使用三種遍歷:先序遍歷(DLR):

訪問根結點,按先序遍歷左子樹,按先序遍歷右子樹。中序遍歷(LDR):

按中序遍歷左子樹,訪問根結點,按中序遍歷右子樹。后序遍歷(LRD):

按后序遍歷左子樹,按后序遍歷右子樹,訪問根結點。二叉樹為空時,執(zhí)行空操作,即空二叉樹已遍歷完。本文檔共108頁;當前第80頁;編輯于星期一\9點3分

(2)遍歷算法先序遍歷:DLR中序遍歷:LDR后序遍歷:LRDADBCDLRADLRDLR>B>>D>>CDLR以先序遍歷DLR為例演示遍歷過程ABDCBDACDBCA本文檔共108頁;當前第81頁;編輯于星期一\9點3分e-+a*b-cd/fLDRLDRa+LDRb*LDRc-d-LDRe/f中序遍歷示圖本文檔共108頁;當前第82頁;編輯于星期一\9點3分已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A)acbedB)decabC)deabc D)cedba已知一棵二叉樹前序遍歷和中序遍歷分別為ABDEGCFH和DBGEACHF,則該二叉樹的后序遍歷為

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

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

A)線性表是線性結構 B)棧與隊列是非線性結構

C)線性鏈表是非線性結構 D)二叉樹是線性結構例題講解本文檔共108頁;當前第83頁;編輯于星期一\9點3分在深度為5的滿二叉樹中,葉子結點的個數(shù)為

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

A)bdgcefhaB)gdbecfhaC)bdgaechfD)gdbehfca在樹結構中,樹根結點沒有【1】。具有3個結點的二叉樹有

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

A)12 B)13C)14 D)15雙親結點本文檔共108頁;當前第84頁;編輯于星期一\9點3分設有下列二叉樹:

對此二叉樹前序遍歷的結果為A)ZBTTCPXAB)ATBZXCTPC)ZBTACTXPD)ATBZXCPT設有下列二叉樹:對此二叉樹的中序遍歷的結果為A)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA本文檔共108頁;當前第85頁;編輯于星期一\9點3分設樹T的度為4,其中度為1、2、3、4的結點個數(shù)分別為4、2、1、1。則T中的葉子結點數(shù)為A)8B)7C)6D)5設一棵完全二叉樹共有700個結點,則該二叉樹中有()個葉子結點。

350本文檔共108頁;當前第86頁;編輯于星期一\9點3分解法一:

根據(jù)二叉樹的性質3可知:葉子結點數(shù)n0=n2+1,

根據(jù)完全二叉樹的概念可知,度為1的結點數(shù)要么為1,要么為0,

二叉樹總結點數(shù)N=n0+n1+n2=2n0+n1-1,

得出n0=(N+1-n1)/2=N/2向上取整,

所以本題答案是350個葉子結點。解法二:

易求出總層數(shù)和末層葉子數(shù)??倢訑?shù)k=log2N向上取整=10;

且前9層總結點數(shù)為2^9-1=511(完全二叉樹的前k-1層肯定是滿的)

所以末層葉子數(shù)為700-511=189個。

請注意葉子結點總數(shù)≠末層葉子數(shù)!

還應當加上第k-1層(靠右邊)的0度結點個數(shù)。

末層的189個葉子只占據(jù)了上層的95個結點(189/2),上層(k=9)右邊的0度結點數(shù)還有2^(9-1)-95=161個。

所以,全部葉子數(shù)=189(末層)+161(k-1層)=350個。本文檔共108頁;當前第87頁;編輯于星期一\9點3分在一個容量為15的循環(huán)隊列中,若頭指針front=6,尾指針rear=9,則該循環(huán)隊列中共有()個元素。設一棵二叉樹的中序遍歷結果為DBEAFC,前序遍歷結果為ABDECF,則后序遍歷結果為()。3DEBFCA本文檔共108頁;當前第88頁;編輯于星期一\9點3分1.8查找和排序順序查找與二分查找算法基本排序算法(交換類排序、選擇類排序、插入類排序)本文檔共108頁;當前第89頁;編輯于星期一\9點3分1.8.1查找查找是在一個給定的數(shù)據(jù)結構中,根據(jù)給定的條件查找滿足條件的結點。不同的數(shù)據(jù)結構采用不同的查找方法。查找的效率直接影響數(shù)據(jù)處理的效率。查找的結果:查找成功:找到滿足條件的結點查找失?。赫也坏綕M足條件的結點。本文檔共108頁;當前第90頁;編輯于星期一\9點3分1.8.1.1順序查找(線性查找)◆查找過程:

對給定的一關鍵字K,從線性表的一端開始,逐個進行記錄的關鍵字和K的比較,直到找到關鍵字等于K的記錄或到達表的另一端。◆可以采用從前向后查,也可采用從后向前查的方法。◆在平均情況下,大約要與表中一半以上元素進行比較,效率較低。平均查找長度較大。最好情況:1最壞情況:n◆在下面兩種情況下只能采取順序查找:

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

b.即使是有序線性表,但采用的是鏈式存儲結構。本文檔共108頁;當前第91頁;編輯于星期一\9點3分1.8.1.2折半查找(二分法查找)思想:先確定待查找記錄所在的范圍,然后逐步縮小范圍,直到找到或確認找不到該記錄為止。前提:必須在具有順序存儲結構的有序表中進行。分三種情況:

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

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

3)若x大于中間項的值,則在線性表的后半部分查找。特點:比順序查找方法效率高。最壞的情況下,需要比較log2n次。本文檔共108頁;當前第92頁;編輯于星期一\9點3分1.8.2排序1.8.2.1概述

1、排序的功能:

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

2、排序過程的組成步驟:首先比較兩個關鍵字的大??;然后將記錄從一個位置移動到另一個位置。本文檔共108頁;當前第93頁;編輯于星期一\9點3分排序方法插入類排序選擇類排序交換類排序歸并排序簡單插入排序希爾排序簡單選擇排序堆排序起泡排序快速排序本文檔共108頁;當前第94頁;編輯于星期一\9點3分1.8.2.2交換排序交換排序的特點在于交換。有冒泡和快速排序兩種。1、冒泡排序(起泡排序)思想:小的浮起,大的沉底。從左端開始比較。第一趟:第1個與第2個比較,大則交換;第2個與第3個比較,大則交換,……關鍵字最大的記錄交換到最后一個位置上;第二趟:對前n-1個記錄進行同樣的操作,關鍵字次大的記錄交換到第n-1個位置上;依次類推,則完成排序。本文檔共108頁;當前第95頁;編輯于星期一\9點3分第六趟排序后第五趟排序后第四趟排序后第三趟排序后第二趟排序后第一趟排序后初始關鍵字思想:小的浮起,大的沉底。4936416511783665364156364165413641561178363641491156492525251149495611111125252525排序n個記錄最多需要n-1趟冒泡排序正序:比較次數(shù)為O(n-1)

逆序:比較次數(shù)為O(n(n-1)/2)

適合于數(shù)據(jù)較少的情況。

本文檔共108頁;當前第96頁;編輯于星期一\9點3分2、快速排序(對冒泡排序的改進)思想:通過一趟排序將待排序列分成兩部分,使其中一部分記錄的關鍵字均比另一部分小,再分別對這兩部分排序,以達到整個序列有序。

如,經(jīng)過“一次劃分”,將關鍵字序列

52,49,80,36,14,58,61,97,23,75調整為:23,49,14,36,(52)58,61,97,80,75本文檔共108頁;當前第97頁;編輯于星期一\9點3分2、快速排序(對冒泡排序的改進)時間復雜度:O(nlog2n)當待排序列逆序時,蛻變成冒泡排序,時間復雜度:O(n(n-1)/2)本文檔共108頁;當前第98頁;編輯于星期一\9點3分1.8.2.3插入排序

簡單插入、希爾排序1、簡單插入排序:

基本思想:從數(shù)組的第2號元素開始,順序從數(shù)組中取出元素,并將該元素插入到其左端已排好序的數(shù)組的適當位置上。本文檔共108頁;當前第99頁;編輯于星期一\9點3分該算法適合于n較小的情況,時間復雜度為O(n2).待排元素序列:[53]2736156942第一次排序:[2753]3615

溫馨提示

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

評論

0/150

提交評論