完整版數(shù)據(jù)結(jié)構(gòu)知識點全面總結(jié)-精華版_第1頁
完整版數(shù)據(jù)結(jié)構(gòu)知識點全面總結(jié)-精華版_第2頁
完整版數(shù)據(jù)結(jié)構(gòu)知識點全面總結(jié)-精華版_第3頁
完整版數(shù)據(jù)結(jié)構(gòu)知識點全面總結(jié)-精華版_第4頁
完整版數(shù)據(jù)結(jié)構(gòu)知識點全面總結(jié)-精華版_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版第1章緒論 內(nèi)容綱要: 數(shù)據(jù)構(gòu)造研究的內(nèi)容。針對非數(shù)值計算的程序設(shè)計問題, 數(shù)據(jù)構(gòu)造涵蓋的內(nèi)容:研究計算機(jī)的操作對象以及它們之間的關(guān)系和操作線性解fY筏聚、找.隊、串、麟組)非線性給構(gòu)輛結(jié)構(gòu)圖結(jié)構(gòu)順存結(jié)構(gòu) 誠式結(jié)構(gòu) 家索結(jié)構(gòu) 能列緒檢刪除運算 悸改運算 春找運靜 排序達(dá)身根本看法:數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)對象、數(shù)據(jù)構(gòu)造、數(shù)據(jù)種類、抽象數(shù)據(jù)種類 數(shù)據(jù),全部能被計算機(jī)鑒別、儲藏和辦理的符號的會集。數(shù)據(jù)元素 一一是數(shù)據(jù)的根本單位,擁有完滿確定的實質(zhì)意義。數(shù)據(jù)對象 擁有相同性質(zhì)的數(shù)據(jù)元素的會集,是數(shù)據(jù)的一個子集。數(shù)據(jù)構(gòu)造 是相互之間存在一種或多種特定關(guān)系的數(shù)

2、據(jù)元素的會集,表示為: Data_Structure= D, R數(shù)據(jù)種類一一是一個值的會集和定義在該值上的一組操作的總稱。抽象數(shù)據(jù)種類-一由用戶定義的一個數(shù)學(xué)模型與定義在該模型上的一組操作, 它由根本的數(shù)據(jù)種類組成。算法的定義及五個特點。算法是對特定問題求解步驟的一種描述,它是指令的有限序列,是一系列輸入變換為輸出的計算步驟。算法的根本特點 :輸入、輸出、有窮性、確定性、可行性算法設(shè)計要求。正確性、可讀性、強(qiáng)壯性、效率與低儲藏量需求算法解析。時間復(fù)雜度、空間復(fù)雜度、牢固性 學(xué)習(xí)要點:數(shù)據(jù)構(gòu)造的“三要素:邏輯構(gòu)造、物理儲藏構(gòu)造 及在 這種構(gòu)造上所定義的操作運用計算語句頻度來估計算法的時間復(fù)雜度。

3、(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版第二章線性表內(nèi)容綱要:線性表的邏輯構(gòu)造定義,對線性表定義的操作。線性表的定義:用數(shù)據(jù)元素的有限序列表示is毓發(fā)夕我的Gw:是承器,上M號薪元素口印時稱為一日氏聲表中面粒盤:J線性表的儲藏構(gòu)造:次序儲藏構(gòu)造和鏈?zhǔn)絻Σ貥?gòu)造。次序儲藏定義:把邏輯上相鄰 的數(shù)據(jù)元素儲藏在物理上相鄰的儲藏單元中的儲藏構(gòu)造。不用然相鏈?zhǔn)絻Σ貥?gòu)造:其結(jié)點在儲藏器中的地址是隨意的,即邏輯上 相鄰的數(shù)據(jù)元素在物理上鄰。經(jīng)過指針來實現(xiàn)!線性表的操作在兩種儲藏構(gòu)造中的實現(xiàn)。數(shù)據(jù)構(gòu)造的根本運算:更正、插入、刪除、查找、排序1)更正一一經(jīng)過數(shù)組的下標(biāo)即可接見某個特定元素弁更正之。二核心語

4、句:Vi=x;次序表更正操作的時間效率是0(1)2)插入一一在線性表的第i個地址前插入一個元素實現(xiàn)步驟:將第n至第i位的元素向后搬動一個地址;將要插入的元素寫到第i個地址;表長加1。注意:早先應(yīng)判斷:插入地址i可否合法?表可否已滿?應(yīng)當(dāng)吻合條件:1 & i =i; j-) aj+1=a j ;a i =x;n+;插,人時的平均搬動次數(shù)為:n(n+1)/2 +n+1= n/2 -O(n)3)刪除一一刪除線性表的第i個地址上的元素實現(xiàn)步驟:將第i+1至第n位的元素向前搬動一個地址;表長減1。注意:早先需要判斷,刪除地址 i可否合法?應(yīng)當(dāng)吻合條件:1W i n或 i=1, n核心語句:for ( j

5、=i+1; j=n; j+ ) aj-1=aj;n-;(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版序表除一元素的效率:Tn)=(n-1)/2=O(n)序表插入、除算法的平均空 復(fù)度0(1)表:1用表構(gòu)來存放26個英文字母 成的性表 a, b, c, ?,z,寫出 C言程序#include#include typedef struct node char data;struct node *next;node;node *p,*q,*head;int n ;int m=sizeof(node);void build()/ 一般需要3個指量/數(shù)據(jù)元素的個數(shù)/*構(gòu)型定好此后,每個m求一次即可 *

6、/字母 表的生成。要一個個慢慢node型的度就固定了,入int i;head=(node*)malloc(m);p=head;for( i=1; idata=i+ ,a,-1; p-next=(node*)malloc(m);p=p-next ; p-data=i+ a -1;p-next=NULL ;void display()/ 字母 表的/m=sizeof(node)前面已求出因尾點要特別理,故i #26/第一個點字符a/后點”挖坑!指量 P指向后一個點最后一個元素要獨理/表尾點的指域要置空!p=head;while (p)/當(dāng)指 不空循限于無 點的情況printf(%c,p-data)

7、;p=p-next;指 不斷“藤摸瓜(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版2單鏈表的更正(或讀取思路:要更正第i個數(shù)據(jù)元素,必定重新指針起素來找到該結(jié)點的指針p,爾后才能:pdata=new_value讀取第i個數(shù)據(jù)元素的核心語句是:Linklist *find(Linklist *head ,int i) (intj=1;Linklist *p;P=head-next;While(p!=NULL)&(jnext;j+; return p; 3.單鏈表的插入T結(jié)點的生成承第S= (fiode*) ma I loc Gw);S-Xala=才;S-next-p-next鏈表插入的核心語句

8、:Step 1 : s-next=p-next;Step 2 : p-next=s ;6.單鏈表的刪除一 r-富 ,乎 next;/第一保存b的指針,靠它才能找到c;p-next=q-next; 將a、c兩結(jié)點相連,裁汰 b結(jié)點;free(q);完整釋放 b結(jié)點空間7.雙向鏈表的插入操作:設(shè)p已指向第i元素,請在第 i元素前插入元素x:ai-1的后繼從ai (指針是p)變?yōu)閤指針是s): s-next = p ; p-prior-next = s ;ai的前驅(qū)從ai-1 (指針是p-prior)變?yōu)閤 (指針是s); s-prior =p -prior ; p-prior = s ;(完滿wo

9、rd版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版8.雙向鏈表的刪除操作:p -next );設(shè)p指向第i個元素,刪除第 i個元素后繼方向:ai-1的后繼由ai (指針p)變?yōu)?ai+1(指針p -prior-next = p-next ;前驅(qū)方向:ai+1的前驅(qū)由ai (指針p)變?yōu)閍i-1 (指針 p - prior );p-next-prior = p -prior ;數(shù)組的邏輯構(gòu)造定義及儲藏數(shù)組:由一組名字相同、下標(biāo)不相同的變量組成N維數(shù)組的特點:n個下標(biāo),每個元素碰到n個關(guān)系拘束一個n維數(shù)組能夠看作是由假設(shè)干個n- 1維數(shù)組 組成的線性表。儲藏:早先約定按某種次序?qū)?shù)組元素排成一列序列,爾后將這

10、個線性序列存入儲藏器中在二維數(shù)組中,我們既能夠規(guī)定按行儲藏,也能夠規(guī)定按列儲藏。設(shè)一mn-般的二維數(shù)組是 Ac1.d1, c2.d2,那么行優(yōu)先儲藏時的地址公式為:LOC尸LOC(F )+(白尸稀罕矩陣含特別矩陣的儲藏及運算。稀罕矩陣:矩陣中非零元素的個數(shù)較少一般小于5%學(xué)習(xí)要點: 線性表的邏輯構(gòu)造,指線性表的數(shù)據(jù)元素間存在著線性關(guān)系。在次序儲藏構(gòu)造中,元素儲藏的 先后地址 反響出這種線性關(guān)系,而在鏈?zhǔn)絻Σ貥?gòu)造中,是靠指針來反響這種關(guān)系的。次序儲藏構(gòu)造用一維數(shù)組表示,給定下標(biāo),能夠存取相應(yīng)元素,屬于 構(gòu)。隨機(jī)存取的儲藏結(jié)鏈表操作中應(yīng)注意不要使鏈不測“斷開F以,假設(shè)在某結(jié)點前插入一個元素,或刪除

11、某元素,必定知道該元素的前驅(qū)結(jié)點的指針。 掌握經(jīng)過畫出結(jié)點圖來進(jìn)行鏈表單鏈表、循環(huán)鏈表等的生成、插入、刪除、遍歷 等操作。 數(shù)組主若是二維在以 行序/列序 為主的儲藏中的地址計算方法。稀罕矩陣的三元組表儲藏構(gòu)造。稀罕矩陣的十字鏈表儲藏方法。(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版補(bǔ)充要點:.每個儲藏結(jié)點都包括兩局部:數(shù)據(jù)域和指針域(鏈域)其直接前驅(qū)結(jié)點的鏈域的值指示該結(jié)點的數(shù)據(jù)域能夠為空,也可存放 能夠?qū)毡?、非空表的情況以及對首.在單鏈表中, 除了首元結(jié)點外,任一結(jié)點的儲藏地址由.在鏈表中設(shè)置頭結(jié)點有什么好處?頭結(jié)點即在鏈表的首元結(jié)點從前附設(shè)的一個結(jié)點,表長度 等附加信息, 其作用是

12、為了對鏈表進(jìn)行操作時, 元結(jié)點進(jìn)行一致辦理,編程更方便。.怎樣表示空表?(1無頭結(jié)點時,當(dāng)頭指針的值為空時表示空表;(2有頭結(jié)點時,當(dāng)頭結(jié)點的指針域為空時表示空表。.鏈表的數(shù)據(jù)元素有兩個域,不再是簡單數(shù)據(jù)種類,編程時該怎樣表示?因每個結(jié)點最少有兩個重量,且數(shù)據(jù)種類平時不一致,所以要采用構(gòu)造數(shù)據(jù)種類。.sizeof(x)計算變量 x的長度字節(jié)數(shù) ;malloc(m) 一開辟m字節(jié)長度的地址空間,弁返回這段空間的首地址;free(p)釋放指針p所指變量的儲藏空間,即完整刪除一個變量。7.鏈表的運算效率解析: 1查找因線性鏈表只能次序存取,即在查找時要重新指針找起,查找的時間復(fù)雜度為O(n)。2插入

13、和刪除因線性鏈表不需要搬動元素,只要更正指針,一般情況下時間復(fù)雜度為O(1)。但是,若是要在單鏈表中進(jìn)行前插或刪除操作,由于要重新查找前驅(qū)結(jié)點,所耗時間復(fù)雜度將是 O(n)。例:在n個結(jié)點的單鏈表中要刪除結(jié)點*P ,需找到它的 前驅(qū)結(jié)點的地址,其時間復(fù)雜度為 O n.次序儲藏和鏈?zhǔn)絻Σ氐牟町惡蛢?yōu)缺點?次序儲藏時, 邏輯上相鄰的數(shù)據(jù)元素,其物理存放地址也相鄰。次序儲藏的優(yōu)點是儲藏密度大,儲藏空間利用率高;缺點是插入或刪除元素時不方便。鏈?zhǔn)絻Σ貢r, 相鄰數(shù)據(jù)元素可隨意存放,但所占儲藏空間分兩局部,一局部存放結(jié)點值,另一局部存放表示結(jié)點間關(guān)系的指針。鏈?zhǔn)絻Σ氐膬?yōu)點是插入或刪除元素時很方便,使用靈便。

14、缺點是儲藏密度小,儲藏空間利用率低。次序表合適于做查找這樣的靜態(tài)操作;鏈表官于做插入、刪除這樣的動向操作。假設(shè)線性表的長度變化不大,且其主要操作是查找,那么采用次序表;假設(shè)線性表的長度變化較大,且其主要操作是插入、刪除操作,那么采用鏈表。.判斷:“數(shù)組的辦理比其他復(fù)雜的構(gòu)造要簡單,對嗎?:對的。由于一一數(shù)組中各元素?fù)碛幸恢碌姆N類;二 數(shù)組元素的下標(biāo)一般擁有 固定的上界和下界數(shù)組一旦被定義,它的維數(shù)和維界就不再 改變。數(shù)組的,根本操作比較簡 單,除了結(jié)構(gòu)的初始化和銷毀之外,只有存取元素和更正元素值的操作。.三元素組表中的每個結(jié)點對應(yīng)于稀罕矩陣的一個非零元素,它包括有三個數(shù)據(jù)項,分別 表示該元素的

15、行下標(biāo)、列下標(biāo)和元素花-一(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版.寫出右所示稀罕矩的存形式。解:介 3種存形式。法1 :用性表表示:12 9(1,2,12) , (1,3,9) , (3,1,-3) , (3,5,14),(4,3,24) , (5,2,18) ,(6,1,15) , (6,4,-7)法2:用十字表表示用途:方便稀罕矩的加減運算法3:用二兀矩表7K:方法:每個非 0元素占用5個域value11Tl 14 13B 31T 3514土4324E521076115M 64,7稀罕矩存的缺點:將失去隨機(jī)存取功能代:1.用數(shù)V來存放26個英文字母 成的性表a, b, c, ?,

16、z,寫出在序構(gòu)上生成和 示表的C言程 序。char V30;void build()字母線性表的生成,即建表操作int i;V0=a;for( i=1;i=n-1;i+ )Vi=Vi-1+1;void display( ) /字母線性表的顯示,即讀表操作int i;for( i=0;iM)上溢else stop+=e;次序棧出棧函數(shù)POP()status Pop( ) if(top=L) 下溢 else e=s-top;return(e);(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版 行列的定義及操作,行列的刪除在一端隊尾,而插入那么在行列的另一端隊頭。因此在兩種儲藏構(gòu)造中,都需要隊頭和隊

17、尾兩個指針。行列:只幸虧表的一端進(jìn)行插入運算,在表的另一端進(jìn)行刪除運算的線性表。鏈行列結(jié)點種類定義:typedef Struct QNodeQElemTypedata; / 兀素Struct QNode *next; 指向下一結(jié)點的指針Qnode , * QueuePtr ;鏈行列種類定義:typedef struct QueuePtrfront ; / 隊首指針QueuePtrrear ; / 隊尾指針 LinkQueue;鏈隊表示圖:空鏈隊的特點:front=rear鏈隊會滿嗎? 一般不會,由于刪除時有入隊尾部插入 :rear-next=S; rear=S;出隊頭部刪除 :front-ne

18、xt=p-next;2.次序隊次序隊種類定義:free動作。除非內(nèi)存缺少!#define QUEUE-MAXSIZE 100/ 最大行歹 U 長度typedef struct QElemType *base;行歹U 的基址intfront;隊首指針intrear;/隊尾指針g號銀植出!隊列,先涌嗎F團(tuán)在樣比現(xiàn)人眄村出隊忡d(B空隊列的特征? |匐定:Irnittn*;uSqQueue建隊核心語句:q . base=(QElemType *)malloc(sizeof (QElemType* QUEUE_MAXSIZE;/ 分配空間 次序隊表示圖:出凱匕七部刪除”川 L f Qf!JDt|:(完

19、滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版循環(huán)行列:隊空條件 :front = rear(初始化時:front = rear )隊滿條件:front = (rear+1) % N(N=maxsize)行列長度即數(shù)據(jù)元素個數(shù):L= N + rear frontN1初始化一個空行列Status InitQueue ( SqQueue &q ) / 初始化空循環(huán)行列q(q . base=(QElemType *)malloc(sizeof(QElemType * QUEUE_MAXSIZE);/ 分配空間if (!q.base) exit(OVERFLOW);/ 內(nèi)存分配失敗,退出程序q.fron

20、t =q.rear=0; / 置空行歹 U return OK; /InitQueue;2入隊操作Status EnQueue(SqQueue &q, QElemType e)/向循環(huán)行列q的隊尾參加一個元素eif ( (q.rear+1) % QUEUE_MAXSIZE = = q.front ) return ERROR ; /隊滿那么上溢,無法再入隊q.rear = ( q . rear + 1 ) % QUEUE_MAXSIZE;q.base q.rear = e; / 新元素 e 入隊return OK;/ EnQueue;3出隊操作Status DeQueue ( SqQueue

21、&q, QElemType &e) /假設(shè)行列不空,刪除循環(huán)行列 q的隊頭元素,由e返回其值,并返回 OKif ( q.front = = q.rear ) return ERROR;/ 行列空q.front=(q.front+1) % QUEUE_MAXSIZE ;e = q.base q.front ;return OK;/ DeQueue1等于隊頭鏈行列空的條件是首尾指針相等,而循環(huán)行列滿的條件的判斷,那么有隊尾 加和設(shè)標(biāo)志兩種方法。(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版補(bǔ)充要點:.為什么要設(shè)計貨倉?它有什么獨到用途?調(diào)用函數(shù)或子程序非它莫屬;遞歸運算的有力工具;用于保護(hù)現(xiàn)場和

22、恢復(fù)現(xiàn)場;簡化了程序設(shè)計的問題。.為什么要設(shè)計行列?它有什么獨到用途?失散事件的模擬模擬事件發(fā)生的先后次序,比方 CPU芯片中的指令譯碼行列操作系統(tǒng)中的作業(yè)調(diào)換一個CPU執(zhí)行多個作業(yè);簡化程序設(shè)計。.什么叫“假溢出?怎樣解決?答:在次序隊中,當(dāng)尾指針已經(jīng)到了數(shù)組的上界,不能夠再有入隊操作, 但其實數(shù)組中還有空地址,這就叫“假溢出-解決假溢出的路子采用循環(huán)行列。.在一個循環(huán)行列中,假設(shè)約定隊首指針指向隊首元素的前一個地址。那么,從循環(huán)行列中刪除一個元素時,其操作是先搬動隊首地址,后 取出元素。.線性表、棧、隊的異同點:相同點:邏輯構(gòu)造相同,都是線性的;都能夠用次序儲藏或鏈表儲藏;棧和行列是兩種特

23、別的線性表,即受限的線性表可是對插入、刪除運算加以限制。不相同點: 運算規(guī)那么不相同:線性表為隨機(jī)存??;而棧是只贊同在一端進(jìn)行插入和刪除運算,所以是后進(jìn)先出表LIFO ;行列是只贊同在一端進(jìn)行插入、另一端進(jìn)行刪除運算,所以是先進(jìn)先出表FIFO o用途不相同,線性表比較通用;貨倉用于函數(shù)調(diào)用、遞歸和簡化設(shè)計等;行列用于失散 事件模擬、OS作業(yè)調(diào)換和簡化設(shè)計等。(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版第四章串內(nèi)容綱要:串是數(shù)據(jù)元素為字符的線性表,串的定義及操作。串即字符串,是由零個或多個字符組成的有限序列,是數(shù)據(jù)元素為單個字符的特別線性表。串 比較:int strcmp(char *s1,

24、char *s2);求串長:int strlen(char *s);串聯(lián)接: char strcat(char *to,char *from)子串 T 定位: char strchr(char *s,char *c);串的儲藏構(gòu)造,因串是數(shù)據(jù)元素為字符的線性表,所以存在“結(jié)點大小的問題。模式般配算法 。串有三種機(jī)內(nèi)表示方法:J癲一空地址連續(xù)的存儲單元存儲串45的字 特庫科以昨志存喊叫一能式存儲南一期地址設(shè)續(xù)的存礴單元存儲串值的字 符序列I但在儲空間是在所執(zhí)行過程中動宓的塊鼠存儲表示-方式存儲模式般配算法 :算法目的:確定主串中所含子串第一次出現(xiàn)的地址定位定位問題稱為串的模式般配,典型函數(shù)為In

25、dex(S,T,pos)BF算法的實現(xiàn)一即編寫Index(S, T, pos)函數(shù)BF算法設(shè)計思想:將主串S的第pos個字符和模式T的第1個字符比較,假設(shè)相等,連續(xù)逐個比較后續(xù)字符;假設(shè)不等,從主串S的下一字符pos+1起,重新與T第一個字符比較。直到主串S的一個連續(xù)子串字符序列與模式T相等。返回值為 S中與T般配的子序列第一個字符的序號,即般配成功。否那么,般配失敗,返回值 0。Int Index_BP(SString S, SString T, int pos) /返回子串 T在主串S中第pos個字符此后的地址。假設(shè)不存在,那么函數(shù)值為0.其中,T 非空, K pos w StrLengt

26、h(S)i=pos;j=1;while ( i=S0 & jT0) return i-T0; /T 子串指針j正常到尾,說明般配成功,else return 0; /否那么屬于iS0情況,i先到尾就不正常 /Index_BP(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版補(bǔ)充要點:.空串和空白串有無差異?答:有差異??沾∟ull String)是指長度為零的串;而空白串(Blank String),是指包括一個或多個空白字符(空格鍵)的字符串.“空串是隨意串的子串;隨意串 S都是S自己的子串,除 S自己外,S的其他子串稱為S的真子串。,送例自構(gòu)s =* aia?.u*3h/j定長廝序存精結(jié)構(gòu)

27、 串存儲黯構(gòu)堆存儲結(jié)構(gòu)I塊逋存儲晶構(gòu)操作(或運力)老十函數(shù)的實現(xiàn)1 裝式摩颼威:模式四忻即予串定位延算即如何丈現(xiàn)1曲加武氏丁亦必)函數(shù)(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版第六章和二叉內(nèi)容綱要:是復(fù)的非性數(shù)據(jù)構(gòu),二叉的定,根本看法,。:由一個或多個(n 0)點成的有限會集T ,有且有一個 點稱 根root,*1 ,其他的點分m(m )0)個互不訂交的有限會集T1,T2 , ?, Tm。每個會集自己又是棵,被稱作個根的子。二叉:是nn冷個點的有限會集,由一個根 點以及兩棵互不 訂交的、分稱左子 和右子 的二叉成。P88二叉的性,存構(gòu)。1:在二叉的第 i上至多有2:深度k的二叉至多有2i

28、-1個點i02k-1 個點k0性3:于任何一棵二叉,假設(shè) 2度的點數(shù)有性4:擁有n個點的完滿二叉的深度必性5:完滿二叉,假設(shè)從上至下、從左至右號,號2i ,其右孩子 號2i + 1 ;其雙的號必二叉的存構(gòu):一、序存構(gòu)n2個,葉子數(shù) n0必然 n2+ 1i的點,其左孩子號必i/2= 1根,除外。按二叉的點“自上而下、從左至右號,用一的存元存。假設(shè)是完滿/二叉 能夠做到唯一復(fù)原。不是完滿二叉:一律完滿二叉!方法很,將各空缺上“虛點,其內(nèi)容空缺點:浪空;插入、除不便二、式存構(gòu)用二叉表即可方便表示。一般從根點開始存。IrH jhild ilja tkl t也皿點:不浪空;插入、除方便 二叉的遍。指依照

29、某種次序 二叉的全部點,而且每個點遍二叉由根、左子、右子組成,定假設(shè)限制先左后右,有三種 方案:一次,獲取一個性序列。D、L、RDLR先序遍LDR中序遍LRD后序遍(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版 樹的儲藏構(gòu)造,樹、森林的遍歷及和二叉樹的相互變換。M域小期如何轉(zhuǎn)上每時? 3一方法:加線工醺匚旋轉(zhuǎn)回憶2:二叉樹怎樣復(fù)原為樹?要點:逆操作,把全部右孩子變?yōu)樾值?!談?wù)? :森林怎樣轉(zhuǎn)為二叉樹?法一: 各森林先各自轉(zhuǎn)為二叉樹;依次連到前一個二叉樹的右子樹上法二:森林直接變兄弟,再轉(zhuǎn)為二叉樹談?wù)?:二叉樹怎樣復(fù)原為森林?要點:把最右邊的子樹變?yōu)樯?,其他右子樹變?yōu)樾值軜浜蜕值膬Σ胤绞剑?/p>

30、樹有三種常用儲藏方式:雙親表示法孩子表示法孩子一兄弟表示法問:樹一二叉樹的“連線一抹線一旋轉(zhuǎn)怎樣由計算機(jī)自動實現(xiàn)?答:用“左孩子右兄弟表示法來儲藏即可。firstchilncxt5iblin樹、森林的遍歷:.,一 l J渾省猿外洎用1芥松.后根 博 I廣度優(yōu)先法歷長層次! 儲藏的過程就是樹變換為二叉樹的過程!沒有中序*歷(W王黑不分左右) 先根遍歷:接見根結(jié)點;依次先根遍歷根結(jié)點的每棵子樹。 后根遍歷:依次后根遍歷根結(jié)點的每棵子樹;接見根結(jié)點。談?wù)摚簶浼僭O(shè)采用“先變換,后遍歷方式,結(jié)果可否相同?.樹的先根遍歷與二叉樹的先序遍歷相同;.樹的后根遍歷相當(dāng)于二叉樹的中序遍歷;.樹沒有中序遍歷,由于子

31、樹無左右之分。森林的遍歷先序遍歷假設(shè)森林為空,返回;接見森林中第一棵樹的根結(jié)點;先根遍歷第一棵樹的根結(jié)點的子樹森林;先根遍歷除去第一棵樹此后節(jié)余的樹組成的森林中序遍歷假設(shè)森林為空,返回;申根遍歷森林中第一棵樹的根結(jié)點的子樹森林;接見第一棵樹的根結(jié)點;申根遍歷除去第一棵樹此后節(jié)余的樹組成的森林(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版二叉的用:哈夫曼和哈夫曼。Huffman :最二叉路徑度最短的Huffman :不等。呼Z -2電人;的 路徑度:I中全部葉子 點的 路徑 度之和構(gòu)造Huffman的根本思想:大的 點用短路徑, 小的 點用 路徑。構(gòu)造Huffman 的步 即 Huffman算

32、法:(1)由定的n個 w1, w2, ?, wn 組成n棵二叉 的會集 F = T1, T2,? , Tn 即森林,其中每棵二叉Ti中只有一個wi的根 點,其左右子 均空。(2)在F中取兩棵根點 最小的做左右子構(gòu)造一棵新的二叉,且新二叉根點的 等于其左右子 的根 點 之和。(3)在F中去兩棵,同將新獲取的二叉參加F中。(4)重復(fù)(2)和,直到F只含一棵 止??眉词荋uffman 。詳盡操作步:sgj正 對咄進(jìn)行合您除與替換 一葡胸儺既黑著礫耳最仔弁題明|赫痔愫再初始配合并(何 cL合并7)四步Fa(7)5Hi!H4 FilTHin F: (J|jSIS Hffl b,甜明的F用由扁加金,飛卜

33、a1rg Jna演 碼11:鈍血data: 找成功,return Kdata :q=p ; p=p-L_child / 向左搜 尋K p-data :q=p ;p=p-R_child /向右搜尋 /找不行功插入到二叉排序中s =(BiTree)malloc(sizeof(BiTNode);s-data=K; s -L_child=NULL; s -R_child=NULL;找不行功,生成一個新 點 s,插入到二叉排序 葉子case t=NULL :t=s; /假設(shè)t空,插入的 點 s作根點K data: q-L_child=s;/ 假設(shè) K 比葉子小,掛左K q-data: q-R_child

34、=s; /假設(shè) K 比葉子大,掛右return OK 二叉排序的除操作怎樣?分表示*P的左、右孩子指;的左 孩子;可能有三種情況:怎樣除一個點?假:*p表示被點的指;PL和PR*f表示*p的雙點指;弁彳般*p是*f如為崎已 涉朦此S6懸才儂1事說*門觸城值的f*扁有兩報事何&小說里夏用*p有兩棵子,怎樣行除操作?除前的中序遍序列:?. PL s p PR f然p的直接前是s , s是*p左子最右下方的點 希望除p后,其他元素的相 地址不。有兩種解決方法:*s的右子; 即fL=PL法1:令*p的左子*f 的左子,*p的右子接SR=PR ;法2:直接令*s代替*p / *s *p左子最右下方的 點

35、(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版二叉排序樹的2(1 + tin a 平衡二叉樹的定義:又稱AVL樹,即它或許是一顆空樹,或許是它的左子樹和右子樹都是平衡二叉樹,且左子樹與右子樹的深度之差的絕對值不高出1。平衡因子:一一該結(jié)點的左子樹的深度減去它的右子樹的深度。平衡二叉樹的特點:任一結(jié)點的平衡因子只能?。?1、0或1。若是在一棵AVL樹中插入一個新結(jié)點,就有可能造成失衡,此時必定重新調(diào)整樹的構(gòu)造,使之恢復(fù)平衡。我們稱調(diào)整平衡過程為平衡旋轉(zhuǎn)。平衡旋轉(zhuǎn)能夠歸納為四類:LL乎衡旋轉(zhuǎn):郭 修A的/子村05 &芋忖上M 人嘛餐 通上訴嘛卻爆i和要1f哪LR平衡旋轉(zhuǎn):yRR平衡旋轉(zhuǎn)h著曜幗鈕

36、上 策點.鳴螂干事閃屆&1中加者庭息的女子柑的市子樹 上旭人造*.修*B6因子從I增加W(C)X *喻前籟感幡1r孑RL邛密整 |脖疾A第由這素械上需*型觀療M時時才皿,型吟學(xué)習(xí)要點:查找表是稱為會集的數(shù)據(jù)構(gòu)造。因元素間關(guān)系特別松弛,其操作需借助其他數(shù)據(jù)構(gòu)造來 實現(xiàn)。本章列舉了三種方法靜態(tài)查找表,動向查找表實現(xiàn)查找表的運算。次序表因設(shè)置了監(jiān)察哨使查找效率大大提高。有序表的平均查找長度不高出樹的深度。查找的ASL二叉排序樹的形態(tài)取決于元素的輸入次序。按中序遍歷可獲取結(jié)點的有序序列,應(yīng)熟練 掌握其建立、查找,插入和刪除算法。平衡二叉樹的看法,應(yīng)熟練掌握手工繪制平衡二叉樹。(完滿word版)數(shù)據(jù)構(gòu)造

37、知識點全面總結(jié)一精華版補(bǔ)充:.查找的過程是怎樣的?K的記錄,給定一個值 K,在含有 n個記錄的文件中進(jìn)行搜尋,搜尋一個要點字值等于 如找到那么輸出該記錄,否那么輸出查找不行功的信息。.對查找表常用的操作有哪些?盤問某個“特定的數(shù)據(jù)元素可否在表中;盤問某個“特定的數(shù)據(jù)元素的各種屬性;在查找表中插入一元素;從查找表中刪除一元素。.哪些查找方法?查找方法取決于表中數(shù)據(jù)的排列方式;.怎樣評估查找方法的利害?用比較次數(shù)的平均值來評估計法的利害。稱為平均查找長度ASL oASL= E Pi. Ci.使用折半查找算法時,要求被查文件:采用次序存貯構(gòu)造、記錄按要點字遞加有序.將線性表構(gòu)造成二叉排序樹的優(yōu)點:查

38、找過程與次序構(gòu)造有序表中的折半查找相似,查找效率高;中序遍歷此二叉樹,將會獲取一個要點字的有序序列即實現(xiàn)了排序運算若是查找不行功,能夠方便地將被查元素插入到二叉樹的葉子結(jié)點上,而且插入或刪除 時只要更正指針而不需搬動元素。(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版第九章內(nèi)部排序內(nèi)容綱要:排序的定,排序能夠看作是 性表的一種操作排序:將一 亂無章的數(shù)據(jù)按必然的 律次排列起來。排序的分,定排序與不 定排序的定。A、B的先后次序保持不,定性一一假S兩個A和B的關(guān) 字相等,但排序后稱種排序算法是定的。插入排序直接插入、折半插入,索引表插入、希插入排序插入排序的根本思想是:插入fit廳有多種具體實

39、現(xiàn)算常:匈排半疆人錯序中口軟穗嫌南朝笆藺喊 肺匚送插兼核癌每步將一個待排序的 象,按其關(guān)大小,插入到前面 已排好序的一 象的合適地址上,直到 象全部插入 止。言之,插入 排序,保子序列中隨 都是排好序的。1)直接插入排序在已形成的有序表中 性找,弁在合適地址插入,把原來地址上的元素向后 移。,狷寫出直接is人排序的弟間過程序列.i 131,a& 31 2?, % 1兒十6,章港磁.海嚏11:3,伉13】Q】濁門1心工,13/3期,務(wù)17$111篇任*13第:為1127,31 ,,而3f &%13, M $1 】jJL3, 5,6T9Ti:.p 0,門4311效率: 因在最壞情況下,全部元素的比

40、 次數(shù) 和0+ 1 + ?+ n-1)- O(n2) TOC o 1-5 h z 其他情況下也要考 移元素的次數(shù)。故復(fù)度O(n2)空效率:占用 1個沖元O1算法的 定性:因 25*排序后依舊在25的后邊元一定直接插入排序算法的:void InsertSort ( SqList &L ) / 序表L 作直接插入排序for ( i = 2; i =L.length; i+) /假設(shè)第一個 有序 L.r0= L.ri;j=i-1 ;先將待插入的元素放入“標(biāo)兵地址while L0 .keyLj.key) L,rj+1= L.rj;j-;/只要子表元素比 標(biāo)兵大就不斷后移L.rj+1= L.r0;直到子

41、表元素小于 標(biāo)兵,將標(biāo)兵送入當(dāng)前要插入的地址包括插入到表首(完滿word版)數(shù)據(jù)構(gòu)造知識點全面總結(jié)一精華版2折半插入排序既然子表有序且為次序儲藏構(gòu)造,那么插入時采用折半查找定可加速。優(yōu)點:比較次數(shù)大大減少,全部元素比較次數(shù)僅為O(nlog2n)。時間效率:誠然比較次數(shù)大大減少,痛惜搬動次數(shù)并未減少,所以排序效率仍為O(n2)空間效率:仍為O 1牢固 性:牢固假設(shè)記錄是鏈表構(gòu)造,用直接插入排序行否?答:行,而且無需搬動元素,時間效率更高!但請注意:單鏈表構(gòu)造無法實現(xiàn)“折半查找3表插入排序根本思想: 在次序儲藏構(gòu)造中,給每個記錄增開一個指針重量,在排序過程中將指針內(nèi)容逐個更正為已經(jīng)整理排序過的后繼

42、記錄地址。優(yōu)點:在排序過程中不搬動元素,只更正指針。此方法擁有鏈表排序和地址排序的特點表插入排序算法解析:無需搬動記錄,只要更正指針值。但由于比較次數(shù)沒有減少,故時間效率仍為O(n2)空間效率必然低,由于增開了指針重量但在運算過程中沒適用到更多的輔助單元牢固性:25和25*排序前后次序未變,牢固。注:此算法獲取的可是一個有序鏈表,查找記錄時只能滿足次序查找方式。5希爾shell排序根本思想:先將整個待排記錄序列切割成假設(shè)干子序列,分別進(jìn)行直接插入排序,待整個序列中的記錄“根本有序時,再對全體記錄進(jìn)行一次直接插入排序。優(yōu)點:讓要點字值小的元素能很快前移,且序列假設(shè)根本有序時,再用直接插入排序辦理,時間效率會高很多。h 關(guān)鍵字序列 T= 2i ( 25*, 49,25 第謝華

溫馨提示

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

評論

0/150

提交評論