第一章
-
數據
數據是描述客觀事物的符號 , 是能夠被計算機輸入 , 識別 , 處理的各種符號 , 是
計算機化的信息。 -
數據項
數據不可分割的最小單位 , 一個元素由若干個數據項構成。 -
數據元素
它是組成數據的基本單位 , 是數據集合中的個體 , 在計算機程序中 , 通常作為一
個整體進行考慮和處理。 -
數據對象
是性質相同的數據元素的集合 , 是數據的一個子集。 -
數據處理
是指對數據進行查找 , 插入 , 刪除, 合並 , 排序, 統計以及簡單計算等的操作過
程。 -
數據結構
是研究數據元素之間抽象化的相互關系和這種關系在計算機中的存儲表示 ( 即
數據的邏輯結構和物理結構 ), 並對這種結構定義相適應的運算 , 設計出相應的
算法, 且確保經過這些運算后所得到的新結構仍然是原來的結構類型。 -
數據類型
數據類型是一個值的集合和定義在這個值集上的一組操作的總稱。 -
抽象數據類型
是指一個數學模型以及定義在該模型上的一組操作。 抽象數據類型的定義取決
於它的一組邏輯特性 , 而與其在計算機內部如何表示和實現無關。
9. 算法
解決一個問題的方法和步驟。 -
時間復雜度
T(N) =O(F(N)), 它表示隨問題規模N增大 , 算法執行時間增長率與 F(N) 的增長
率相同 ,F(N) 算法的時間復雜性。 -
原地工作
算法執行時 , 若額外空間相對於輸入數據量來說是常數 , 則稱此算法為原地工
作。 -
線性表
一種數據結構 , 是 N(N>=0)個同質元素的有限序列 , 除首尾元素外 , 每個元素有
唯一的前驅和唯一的后繼。 -
隊列
是一種受限線性表 , 是先進先出的線性表 -
循環隊列
在隊列的順序存儲結構中 , 把存儲空間的首尾邏輯上相連 , 構成一個環 , 使得存
儲空間上只要有空余的地址 , 就可以繼續進行入隊列操作 , 極大利用了物理空
間。用頭部和尾部兩個指示器表示隊列頭和隊列尾 , 插入在尾部進行 , 刪除在頭
部進行。 -
單鏈表
每一個數據元素 , 都需用兩部分來存儲: 一部分用於存放數據元素值 , 稱為數據
域;另一部分用於存放直接后繼結點的地址 ( 指針), 稱為指針域 , 元素的存儲空
間可以連續 , 也可以是不連續的。 而數據元素之間的邏輯關系由指針域來確定。 -
雙向鏈表
線性表采用鏈式存儲時 , 每個結點除一個數據域外 , 包含兩個指針域 , 一個指向
該結點的直接后繼 , 一個指向該結點的直接前驅 , 這種方式構成的鏈表 , 即為雙
向鏈表。 -
希爾排序
是插入排序的一種 , 又叫縮小增量排序 , 先按增量進行分組 , 組內插入排序 , 然
后每次縮短增量 , 再進行分組和組內插入排序 , 直到增量為 1 時, 進行最后一
次排序止。 -
完全圖
任何一個有 N 個結點的無向圖 , 若其邊數為 N(N-1)/2, 則這個無向圖就是完全
圖 -
廣度遍歷
按層次編歷方式 , 從某一點 V0 開始遍歷它的所有鄰接點 V1,V2……, 再依次訪
問 V1,V2.. 的所有未被訪問過的鄰接點 , 直到所有的點均遍歷完成 -
關鍵字
數據元素的某個數據項的值 , 用它可以標識列表的一個或一組元素。 -
串
串是字符線性的有限集合。 -
子串
串中任意個連續的字符組成的子序列稱作該串的子串。 -
棧
是一種受限線性表 , 是插入和刪除操作在同一端進行的 , 是后進先出的線性表。
第六章
-
樹
樹是 n(n>=0) 個結點的有限集。在任意一棵非空樹中:
(1) 有且僅有一個特殊的稱為根的結點 ;
(2) 當 n>1時, 其余結點可分成 m(m>0)個互不相交的有限集 T1,T2,...,Tm, 其中
每一個集合本身又是一棵樹 , 並且稱為根的子樹。 -
結點
結點不僅包含數據元素,而且包含指向子樹的分支
-
葉子結點
度為 0 的結點 , 即沒有后繼的結點 . -
非終端結點
又叫作分支節點,指度不為0的結點,有后繼的節點
-
二叉樹
二叉樹是每個結點至多有兩個孩子結點的一種樹。 其中兩個孩子結點分別被稱
為左孩子結點和右孩子結點。 -
子孫
子孫結點以某結點為根的子樹中的任一結點都稱為該結點的子孫。 -
孩子結點與雙親結點
樹中某個結點的子樹的根結點稱為該結點的孩子結點。相反 , 稱該結點為孩子
結點的雙親結點。 -
結點的度
樹的某個結點的分支 ( 子樹) 個數叫做該結點的度。 -
樹的度
樹的度是樹中所有結點的最大度數。 -
平衡因子
結點的左子樹深度與右子樹深度之差。 -
生成樹
一個連通圖的生成樹是指一個極小連通子圖 , 它含有圖中的全部頂點 ,N-1 條
邊。 -
滿二叉樹
如果所有的分支結點都有左右孩子結點,並且葉子節點都集中在二叉樹的最下一層,這樣的二叉樹稱為滿二叉樹。(嚴版)深度為 K,且有 2^K -1 個結點的二叉樹稱為滿二叉樹
-
完全二叉樹
對滿二叉樹的結點從上到下 , 從左到右進行依次進行編號 , 若有一棵二叉樹的每一個結點都與深度為 K 的滿二叉樹中編號都一一對應時 , 只是最后一層不滿 ,稱做完全二叉樹 . -
堂兄弟
同一層上不同雙親的結點 , 互稱堂兄弟 . -
兄弟
同一個雙親的孩子之間互為兄弟
-
祖先
一個結點的祖先是指從根結點到該結點的路徑上的所有結點。 -
層次
從跟開始,根為第一層,根的孩子為第二層,跟的孩子的孩子為第三層,以此類推
-
樹的高度
樹中所有結點的層次的最大值 . -
結點的深度(從上往下)
從根結點到該結點路徑上的結點數
-
結點的高度(從下往上)
從某結點往下走可能到達多個葉子結點,對應了多條通往這些葉子結點的路徑,其中最長的那條路徑上結點的個數即為該結點在樹中的高度
-
有序樹
樹中結點的子樹從左到右是有次序的,不能交換
-
無序樹
樹中結點的子樹沒有順序,可以任意交換
-
豐滿樹
豐滿樹即理想平衡樹,要求除最底層外,其他層都是滿的
-
森林
若干棵互不相交的樹的集合
-
順序存儲結構
按照順序存儲結構的定義,在此約定,用一組地址連續的存儲單元依次自上而下、自左至右存儲完全二叉樹上的結點元素
-
層次遍歷
要進行層次遍歷,需要建立一個循環隊列,先將二叉樹頭節點入隊列,然后出隊列,訪問該結點,如果它有左子樹,則將左子樹的根節點入隊;如果它有右子樹,則將右子樹的根節點入隊。然后出隊列,對出對節點訪問。如此反復,直至隊列為空為止。
-
路徑
路徑是指從書中的一個結點到另一個結點的分支所構成的路線
-
路徑長度
路徑長度是指路徑長的分支數目
-
樹的路徑長度
樹中每個結點到根結點的路徑長度之和 。根到每個結點的路徑長度的最大值應是樹的高度減一
-
帶權路徑長度
結點具有權值,從該結點到根之間的路徑長度乘以結點的權值,就是該結點的帶權路徑長度
-
樹的帶權路徑長度 (WPL)
樹中所有葉子結點的帶權路徑長度之和 . -
結點的帶權路徑長度
該結點到樹根之間的路徑長度與結點上權的乘積。 -
哈夫曼樹的特點
- 權值越大的結點,距離根節點越近
- 樹中沒有度為1的結點。這列數又叫作正則(嚴格)二叉樹
- 樹的帶權路徑長度最短
-
前綴編碼
如果在一個編碼方案中,任何一個編碼都不是其他任何編碼的前綴(最左子串),則稱該編碼是前綴編碼。
其他知識點
- 二叉樹是一種邏輯結構,但線索二叉樹是加上線索后的鏈表結構,即它是二叉樹在計算機內
部的一種存儲結構,所以是一種物理結構。
第七章 圖
- 圖
圖是頂點與邊的集合。為了與樹形結構進行區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對。若兩個頂點之間存在着一條邊,則表示這兩個頂點具有相鄰關系。一般表示為一個二元組 , 即, 圖 G=(V,E), 各個頂點之間
是多對多的關系。 - 有向圖
每條邊都是由方向
- 無向圖
每條邊都沒有方向
- 弧
在有向圖中,通常將邊稱為弧,含箭頭的一端稱為弧頭,另一端稱為弧尾。
-
圖中頂點的度
頂點 V的度是圖中和頂點 V相關聯的邊的數目。包括入度和出度兩種。 -
有向完全圖
任何一個有 N 個結點的有向圖 , 若其弧個數為 N(N-1) 個, 則這個有向圖就是有
向完全圖。 -
無向完全圖
若無向圖中有n個頂點,則最多有n(n-1)/2條邊(任意兩個頂點之間都有一條邊),將具有n(n-1)/2條邊的無向圖稱為無向完全圖。
-
路徑
在一個圖中,路徑為相鄰定點序偶所構成的序列。路徑長度是指路徑上邊的數目。
-
簡單路徑
在用一個頂點序列表示一條路徑時 , 若序列中沒有相同的頂點重復出現 , 則稱
其為簡單路徑。 -
回路
若一條路徑中第一個頂點和最后一個頂點相同,則這條路徑是一條回路
-
簡單回路
除了第一個頂點和最后一個頂點之外 , 其余頂點均不相同的回路稱為簡單回
路。 -
連通
在無向圖中,如果從頂點vi到頂點vj有路徑,則稱vi和vj連通。
-
連通圖
對於無向圖 , 若 V1到 V2有路徑 , 稱 V1V2是連通的 , 若圖中任意兩點都是連通的 ,
則稱該無向圖是連通圖。 -
連通分量
對於一個無向圖 , 其極大連通子圖叫做該圖一個連通分量。 -
強連通圖
對於一個有向圖 , 每兩個頂點之間都有路徑 , 稱該圖為強連通圖。 -
強連通分量
有向圖的極大強連通子圖 , 稱為有向圖的強連通分量。 -
權
圖中每條邊都可以附有一個對應的數,這種與邊相關的數稱為權。權可以表示從一個頂點到另一個頂點的距離或者花費的代價
- 網
邊上帶有權的圖稱為帶權圖,也稱為網。
- 極大連通子圖
從一個頂點開始作為一個子圖,逐個添加和這個子圖有邊相連的頂點,直到所有相連的頂點都被納入圖中,所生成的子圖就是極大連通子圖。
-
鄰接表:
鄰接表是圖的一種鏈式存儲結構,鄰接表由單鏈表的表頭形成的頂點表和單鏈表其余結點形成的邊表兩部分組成。一般頂點表存放定點信息和指向第一個邊結點指針,邊表結點存放與當前頂點相鄰接頂點的序號和指向下一個邊結點的指針。反映的是頂點出度的情況。
-
逆鄰接表:反映的是頂點的入度情況。
-
普利姆算法(prime)
從圖中任意取出一個頂點,把它當成一棵樹,然后從與這棵樹相接的邊中選出一條最短(權值最小)的邊,並將這條邊及其所連接的頂點也並入到這棵樹中,此時得到了一棵有兩個頂點的樹。然后從與這棵樹相接的邊中選取一條一條最短的邊,並將這條邊及其所連頂點並入到當前樹中,得到一棵有3個頂點的樹,以此類推,直到圖中所有頂點都被並入到樹中為止,此時得到的生成樹就是最小生成樹。
- 克魯斯卡爾
將圖中邊按照權值從小到大排序,然后從最小邊開始掃描各邊,並檢測當前邊是否為侯選邊,即是否該邊的並入會構成回路,如不構成回路,則將該邊並入到當前生成樹中,直到所有邊都被檢測完為止。
- AOV網
活動在定點上的網是一種可以形象地反映出整個工程中各個活動之間的先后關系的有向圖。AOV網是一種以頂點表示活動,邊無權值,以邊表示活動的先后次序且沒有回路的有向圖。
- AOE網
AOE網的邊表示活動,邊有權值,便表示活動的持續時間;頂點表示事件,事件是圖中新活動開始或者舊活動結束的標志。
-
關鍵路徑
在AOE網中,從源點到匯點的所有路徑中,具有最大路徑長度的路徑稱為關鍵路徑
第八章
-
物理結構 ( 存儲結構 )
物理結構又稱為數據的存儲結構 , 是指數據的邏輯結構在計算機中的映像 ( 表
示), 即數據結構在計算機中的存儲方法。 -
線索
在二叉樹中 , 利用空余的指針指向二叉樹某種遍歷方式的結點的前驅和后繼 ,
這種指向前驅和后繼的指針 , 叫線索。 -
線索二叉樹
對二叉樹以某種次序進行遍歷並加上線索的過程叫做線索化。 線索化了的二叉
樹稱為線索二叉樹。 -
廣義表
廣義表簡稱表 , 是零個或多個原子表所組成的有限序列。 -
插入排序
在一個已排好序的記錄子集的基礎上 , 每一步將下一個待排序的記錄有序地插
入到已排好序記錄的子集上 , 直到將所有待排記錄全部插入為止。 -
數據結構
數據結構是數據元素的集合以及定義在該集合上的關系。 -
模式匹配
子串的定位操作稱作串的模式匹配。 -
單循環鏈表
是單鏈表的另一種形式 , 它是一個首尾相接的鏈表 , 表中最后一個結點的指針
域由 null 改為指向頭結點或線性表的第一個結點 , 整個鏈表形成了一個環. -
線索
在二叉樹的存儲結構中 , 必有N+1個空域 , 利用這些空域存放某種遍歷的前
驅和后繼 , 其中指向前驅和后繼的指針叫線索. -
折半查找
對於順序存儲的有序表 , 先取中間位置的記錄關鍵字與所給的關鍵字進行比較 ,
若相等 , 則查找成功 , 否則, 若給定的關鍵字比中間的關鍵字大 , 在原表的后半
部分比較 , 反之, 在原表的前半部分比較 , 如此反復 , 逐步縮小范圍 , 直到找到為
止, 或找不到 , 最后查找范圍為空. -
最小生成樹
在圖 G的所有生成樹中 , 樹權值最小的那棵生成樹 , 稱作最小生成樹. -
廣度優先搜索 (BFS)
首先訪問出發點 v, 接着依次訪問 v 的所有鄰接點 w1,w2,…,wt, 然后再依次訪
問與 wl,w2, …,wt 鄰接的所有未曾訪問過的頂點。依此類推 , 直至圖中所有和
源點 v 有路徑相通的頂點都已訪問到為止。此時從 v 開始的搜索過程結束。
( 若 G是連通圖 , 則遍歷完成 ; 否則, 在圖 C中另選一個尚未訪問的頂點作為新源
點繼續上述的搜索過程 , 直至 G中所有頂點均已被訪問為止。 ) -
前綴編碼
任何一個字符的編碼都不是另一個字符編碼的前綴 , 這種編碼叫做前綴編碼 . -
廣義表
是零個或多個原子表所構成的有序序列 . -
線索二叉樹
利用二叉樹的一些空閑指針指向該結點的前驅或后繼 , 這種指針叫線索 , 線索
后了的二叉樹 , 稱為線索二叉樹 . -
森林
M 棵互相不相交的樹構成的集合 , 將一棵非空樹的根結點刪除 , 樹就變成了森
林. -
哈夫曼樹
設有 N個權值的結點構造一棵有 N個葉子結點的二叉樹 , 其中 WPL最小的那棵
樹, 為哈夫曼樹 . -
哈夫曼編碼
一般以 N 種字符出現的頻率做權值 , 構造哈付曼樹 , 左孩子邊做 0, 右孩子邊做
1, 那么從根到葉子結點經過的 0 和 1 序列, 構成了哈夫曼編碼 . -
子圖
圖 G=(V,E)與圖 G1=(V1,E1), 若 V1包含於 V,且 E1包含於 E,則 G1是 G的子圖。 -
網
圖的弧或邊有與它相關的有意義的數 , 稱作權 , 帶有權值的圖稱作網。 -
深度優先搜索 (DFS)
類似樹的先序遍歷 , 在圖中任選一個頂點作為出發頂點 V0,訪問 V0 后, 依次從
V0的沒被訪問過的鄰接點出發進行深度優先搜索。直到與 V0所連通的所有頂
點均被訪問。 如果, 此時圖中還有頂點尚未訪問 , 則從剩余的頂點中再任選一個
頂點作為出發頂點 V0,重復上述過程 , 直到圖中全部頂點均被訪問為止。 -
查找
根據給定的關鍵字值 , 在特定的表中 , 確定一個其關鍵字與給定值相同的數據
元素, 並返回該數據元素在列表中的位置。這個過程叫查找。 -
平均查找長度 (ASL)
為確定數據元素在表中的位置 , 需和給定值進行比較的關鍵字個數的數學期望
值, 成為查找算法在查找成功的平均查找長度。 -
二叉排序樹
它或是一棵空樹 , 或是有下面性質的樹: 若左或右子樹不空 , 左子樹所有結點值
小於根結點 , 而右子樹所有結點值大於根結點的值 , 其左右子樹也是二叉排序
樹。 -
順序查找
對於給定的關鍵字 K,從線性表的第一個 ( 或最后一個 ) 元素開始 , 依次向后 ( 或
前) 與元素的關鍵字比較 , 若某個記錄的關鍵字與 K 相等, 查找成功 , 否則失敗。 -
平衡二叉樹
或是一棵空樹 , 或左右子樹高度差的絕對值小於等於 1 而且, 左右子樹也是平
衡二叉樹。 -
插入排序
在一個已排好序的基礎上 , 每一步將下一個待排序記錄插到已排好記錄的子集
上, 使之重新有序 , 直到所有待排記錄插完為止。 -
分塊查找 ( 索引查找 )
分塊查找以前兩個為基礎 , 將待查記錄分成若干塊 , 每塊的關鍵字無序 , 但每塊
的關鍵字的最大值有序 , 查找時 , 先查找到待查記錄所在的塊 , 再在塊內進行順
序查找。找塊時 , 即可以用折半查找 , 也可用順序查找。 -
拓撲排序
由某個集合上的偏序集得到該集合上的一個全序 , 這個操作叫做拓撲排序。 -
歸並排序
將兩個或兩個以上的有序表合並成一個新的有序表 , 開始將每個元素當成是一
個個單獨的有序表 , 逐漸表個數以原來一半的速度遞減 , 每個表的長度卻是原
來長度的 2 倍增加 , 不斷重復 , 直到最后是一個表 , 而表的長度是元素個數為
止。 -
排序
根據關鍵字的遞減或遞增的次序 , 把文件中的各個記錄依次排列起來 , 可使一
個無序的數據元素序列變成一個有序的序列的操作。
79.shell 排序
它是插入排序的一種 , 又叫縮小增量排序 , 先按增量進行分組 , 組內插入排序 ,
然后每次縮短增量 , 再進行分組和組內插入排序 , 直到增量為 1 時, 進行最后
一次排序止。 -
內部排序
指的是待排序記錄存放在計算機存儲器中進行的排序過程; -
外部排序
指的是待排序記錄的數量很大 , 以致內存一次不能容納全部記錄 , 在排序過程
中對外存進行訪問的排序過程。 -
不穩定排序
假設 Ki=Kj(1 ≤i ≤n,1 ≤j ≤n,i ≠j), 且在排序前的序列中 Ri 領先於 Rj( 即 i
<j) 。若在排序后的序列中 Rj 領先於 Ri , 則稱所用的排序方法是不穩定的。 -
穩定排序
假設 Ki=Kj(1 ≤i ≤n,1 ≤j ≤n,i ≠j), 且在排序前的序列中 Ri 領先於 Rj( 即 i
<j) 。若在排序后的序列中 Ri 仍領先於 Rj, 則稱所用的排序方法是穩定的 -
直接插入排序
第 1 遍, 將初始文件中的記錄 R1看作有序子文件 , 將 R2插入這個子文件中。 若
R2的關鍵字小於 R1的關鍵字 , 則 R2插在 R1的前面 , 否則 R2插在 R1的后面。
第 2 遍, 將 R3插入前面的兩個記錄的有序子文件中 , 得到 3 個記錄的有序子文
件。依此類推 , 繼續進行下去 , 直到將 Rn插入到前面的 n-1 個記錄的有序子文
件中, 最后得到 n 個記錄的有序文件。 -
氣泡排序法
氣泡排序的過程很簡單。從第一記錄開始 , 相鄰的兩個記錄關鍵字進行比較 ,
若順序不對 , 立即交換 , 直至 N-1 個與第 N個比較為止。 得到一個最大 ( 或最小 )
的關鍵字記錄的結果位置。 -
選擇排序
選擇排序是每一趟在 n-i+1(i= 1,2,3 …n-1) 個記錄中選擇關鍵字最小的記錄
作為有序序列中第 i 個記錄。其中最簡單的是簡單選擇排序 -
快速排序
快速排序的基本思想是把當前待排序的記錄 , 存放到整個表排好序后 , 它應當
在的最終位置上。將原來的待排序表分割成兩部分 , 其中一部分表中的關鍵字
均比另一部分表中的關鍵字小。 然后, 分別對兩部分表用同樣的方式進行排序 ,
直到整個表排好序。 -
堆排序
首先將根結點的記錄與當前樹中具有最大序號的記錄交換 , 把交換后具有最大
序號的記錄輸出 , 得到一個排序的結果。這時的樹不再是堆樹 , 排序暫時停止。
然后, 必須把樹重新調整成堆樹 , 再重復上述過程 , 直到所有記錄都排好序。 -
歸並排序
歸並排序是把兩個或兩個以上的有序表合並成一個新的有序表。把含有 N 個
記錄的無序表當成 N 個有序的子表 , 每個子表的的長度為 1, 然后, 利用兩兩歸
並, 得到 n/2 個長度為 2 或 1 的有序子表。再兩兩歸並直到得到長度為 N 的一
個有序表。 -
基數排序
基數排序是借助“分配”和“收集”兩種操作對單邏輯關鍵字進行排序的一種
內排序方法。 -
含有n個頂點的帶權連通圖
他的最小生成樹是指圖中任意一個由n個頂點構成的邊的權值之和最小的連通子圖