日本无码中文字幕片|日本精品在线观看无码视频|国产精品免费啪啪|Av无码一区二区|亚洲在线黄片免费观看|亚洲日韩中文字幕在线观看|熟女激情乱伦在线观看a黄片|成年人观看毛片网址|AV色色色色日韩性草|国产高清无码免费

考研計算機復(fù)習(xí)——數(shù)據(jù)結(jié)構(gòu)十大核心考點

發(fā)布時間:2017-09-16 編輯:8029
  核心考點一:隊列和棧結(jié)構(gòu)的概念理解
  棧是僅限制在表的一端進(jìn)行插入和刪除運算的線性表,稱插入、刪除這一端為棧頂。表中無元素時為空棧。棧的修改是按后進(jìn)先出的原則進(jìn)行的。通常棧有順序棧和鏈棧兩種存儲結(jié)構(gòu)。
  隊列是一種運算受限的線性表,插入在表的一端進(jìn)行,而刪除在表的另一端進(jìn)行,允許刪除的一端稱為隊頭,允許插入的一端稱為隊尾,隊列的操作原則是先進(jìn)先出的。隊列也有順序存儲和鏈?zhǔn)酱鎯煞N存儲結(jié)構(gòu)。
  核心考點二:線性表中單鏈表相關(guān)算法設(shè)計與實現(xiàn)
  一些基礎(chǔ)但又重要的單鏈表相關(guān)算法,如:
  1.打印單鏈表,void PrintList(List list); 使用一個指針遍歷所有鏈表節(jié)點。
  2.兩個升序鏈表,打印tarList中的相應(yīng)元素,這些元素的序號由SeqList指定,void PrintLots(List tarList, List seqList); 使用兩個指針分別遍歷兩個鏈表,每次取出序列鏈表的一個序號后,根據(jù)該序號,到達(dá)目標(biāo)鏈表指定節(jié)點。
  3.兩個升序鏈表的交集 ,List Intersect(List l1, List l2);
  4.兩個升序鏈表的并集 ,List Join(List l1, List l2);
  5.單鏈表就地置逆,void Reverse(List l); 使用三個指針表示前驅(qū),當(dāng)前和后繼節(jié)點,每次將當(dāng)前節(jié)點的Next指向前驅(qū)節(jié)點,然后向后遍歷直到鏈表末尾。
  核心考點三:二叉樹的遍歷
  遍歷的過程就是把非線性結(jié)構(gòu)的二叉樹中的結(jié)點排成一個線性序列的過程。
  二叉樹遍歷方法可分為兩大類,一類是“寬度優(yōu)先”法,即從根結(jié)點開始,由上到下,從左往右一層一層的遍歷;另一類是“深度優(yōu)先法”,即一棵子樹一棵子樹的遍歷。
  從二叉樹結(jié)構(gòu)的整體看,二叉樹可以分為根結(jié)點,左子樹和右子樹三部分,只要遍歷了這三部分,就算遍歷了二叉樹。設(shè)D表示根結(jié)點,L表示左子樹,R表示右子樹,則DLR的組合共有6種,即DLR,DRL,LDR,LRD,RDL,RLD。若限定先左后右,則只有DLR,LDR,LRD三種,分別稱為先(前)序法(先根次序法),中序法(中根次序法,對稱法),后序法(后根次序法)。三種遍歷的遞歸算法如下:
  1.先序法(DLR)
  若二叉樹為空,則空操作,否則:訪問根結(jié)點à先序遍歷左子樹à先序遍歷右子樹。
  2.中序法(LDR)
  若二叉樹為空,則空操作,否則:中序遍歷左子樹à訪問根結(jié)點à中序遍歷右子樹.
  3.后序法(LRD)
  若二叉樹為空,則空操作,否則:后序遍歷左子樹à后序遍歷右子樹à訪問根結(jié)點.
  核心考點四:完全二叉樹中有關(guān)結(jié)點個數(shù)計算
  完全二叉樹的定義:深度為k,有n個結(jié)點的二叉樹當(dāng)且僅當(dāng)其每一個結(jié)點都與深度為k的滿二叉樹中編號從1至n的結(jié)點一一對應(yīng)時,稱為完全二叉樹。
  完全二叉樹的葉子數(shù)為(n + 1) / 2取下整。
  核心考點五:森林與二叉樹之間的轉(zhuǎn)換以及轉(zhuǎn)換過程中結(jié)點之間的關(guān)系
  將一棵樹轉(zhuǎn)換為二叉樹的方法是:
  1.樹中所有相鄰兄弟之間加一條連線。
  2.對樹中的每個結(jié)點,只保留其與第一個孩子結(jié)點之間的連線,刪去其與其它孩子結(jié)點之間的連線。
  3.以樹的根結(jié)點為軸心,將整棵樹順時針旋轉(zhuǎn)一定的角度,使之結(jié)構(gòu)層次分明。
  森林轉(zhuǎn)換為二叉樹的方法如下:
  1.將森林中的每棵樹轉(zhuǎn)換成相應(yīng)的二叉樹。
  2.第一棵二叉樹不動,從第二棵二叉樹開始,依次把后一棵二叉樹的根結(jié)點作為前一棵二叉樹根結(jié)點的右孩子,當(dāng)所有二叉樹連在一起后,所得到的二叉樹就是由森林轉(zhuǎn)換得到的二叉樹。
  樹和森林都可以轉(zhuǎn)換為二叉樹,二者的不同是:樹轉(zhuǎn)換成的二叉樹,其根結(jié)點必然無右孩子,而森林轉(zhuǎn)換后的二叉樹,其根結(jié)點有右孩子。將一棵二叉樹還原為樹或森林,具體方法如下:
  1.若某結(jié)點是其雙親的左孩子,則把該結(jié)點的右孩子、右孩子的右孩子、……都與該結(jié)點         的雙親結(jié)點用線連起來。
  2.刪掉原二叉樹中所有雙親結(jié)點與右孩子結(jié)點的連線。
  3.整理由1、2兩步所得到的樹或森林,使之結(jié)構(gòu)層次分明。
  核心考點六:對無向連通圖特性的理解
  無向圖的每條邊,在頂點計算度的過程中,都要兩次參與計算(與邊兩關(guān)聯(lián)的2個頂點),因此所有頂點的度之和為偶數(shù)。
  具有n個頂點的無向連通圖,其邊數(shù)大于或等于n-1。
  在無向連通圖中,所有頂點的度數(shù)都有可能大于1。
  核心考點七:對m階B樹定義的理解
  一棵m階的B樹滿足下列條件:
  1. 每個結(jié)點至多有m棵子樹。
  2. 除根結(jié)點外,其它每個分支至少有m/2棵子樹。
  3. 根結(jié)點至少有兩棵子樹(除非B樹只有一個結(jié)點)。
  4. 所有葉結(jié)點在同一層上。B樹的葉結(jié)點可以看成一種外部結(jié)點,不包含任何信息。
  5. 有j個孩子的非葉結(jié)點恰好有j-1個關(guān)鍵碼,關(guān)鍵碼按遞增次序排列。結(jié)點中包含的信息為 ∶ (p0,k1,p1,k2,p2, … ,kj-1,pj-1)
  其中,ki為關(guān)鍵碼,且滿足ki<ki+1;pi為指向子樹根結(jié)點的指針,并且pi所指的子樹中所有關(guān)鍵碼k都滿足ki<k<ki+1。
  核心考點八:帶權(quán)圖的最短路徑算法及應(yīng)用
  迪杰斯特拉(Dijkstra)算法求單源最短路徑,算法思想:
  設(shè)S為最短距離已確定的頂點集(看作紅點集),V-S是最短距離尚未確定的頂點集(看作藍(lán)點集)。
  1.初始化:初始化時,只有源點s的最短距離是已知的(SD(s)=0),故紅點集S={s},藍(lán)點集為空。
  2.重復(fù)以下工作,按路徑長度遞增次序產(chǎn)生各頂點最短路徑,在當(dāng)前藍(lán)點集中選擇一個最短距離最小的藍(lán)點來擴(kuò)充紅點集,以保證算法按路徑長度遞增的次序產(chǎn)生各頂點的最短路徑。當(dāng)藍(lán)點集中僅剩下最短距離為∞的藍(lán)點,或者所有藍(lán)點已擴(kuò)充到紅點集時,s到所有頂點的最短路徑就求出來了。
  注意:①若從源點到藍(lán)點的路徑不存在,則可假設(shè)該藍(lán)點的最短路徑是一條長度為無窮大的虛擬路徑。②從源點s到終點v的最短路徑簡稱為v的最短路徑;s到v的最短路徑長度簡稱為v的最短距離,并記為SD(v)。
  核心考點九:堆排序
  大根堆的定義:完全二叉樹,任一非葉子結(jié)點都大于等于它的孩子,也就是說根結(jié)點是最大的。而且顯然大根堆的任一棵子樹也是大根堆。
  堆排序的基本思想:記錄區(qū)的分為無序區(qū)和有序區(qū)前后兩部分;用無序區(qū)的數(shù)建大根堆,得到的根(最大的數(shù))和無序區(qū)的最后一個數(shù)交換,也就是將該根歸入有序區(qū)的最前端;如此重復(fù)下去,直至有序區(qū)擴(kuò)展至整個記錄區(qū)。
  具體操作可按下面步驟實現(xiàn):
  1.建大根堆
  2.交換根和無序區(qū)最后一個數(shù)
  3.重建大根堆,因為交換只是使根改變了,所以左右子樹依然分別是大根堆。
  4.比較根,左子樹的根和右子樹的根,如果根最大,則無須再作調(diào)整,樹已經(jīng)是大根堆了;如果左子樹的根最大,交換它與根,再遞歸調(diào)整左子樹;如果右子樹的根最大,交換它與根,再遞歸調(diào)整右子數(shù)。
  5.遞歸調(diào)整到葉子的時候,樹就是大根堆了。
  核心考點十:各類排序算法的特點及比較
  幾種主要的排序算法:冒泡排序、選擇排序、插入排序、快速排序、歸并排序、Shell排序、堆排序等。
最新推薦
熱門推薦