第二章、線性表
1、線性表順序儲存結構和鏈式儲存結構的特點
順序儲存時,相連資料元素的存放位址也相鄰,邏輯與物理統一;記憶體中可用的儲存單元都是連續的
優點:儲存密度大,易於查詢和修改
缺點:插入和刪除元素時不方便,儲存空間利用率低,預先分配空間可能造成浪費。
鏈式儲存時,相鄰資料元素可以隨意存放,儲存空間佔兩部分,一部分存放數值,一部分存放指標,表示該結點與其他結點的關係。
優點:插入或者刪除很方便,使用靈活,
缺點,儲存密度小,查詢和修改需要遍歷
使用情況
順序表適宜於做查詢
這樣的靜態操作;鍊錶宜於做插入、刪除
這樣的動態操作。
若線性表的長度變化不大,且其主要操作是查詢,則採用順序表;
若線性表的長度變化較大,且其主要操作是插入、刪除操作,則採用鍊錶。
順序表的儲存空間是靜態分配的
鍊錶的儲存空間是動態分配的
基礎知識題
首元結點是指鍊錶儲存線性表中第乙個資料結構a1的結點『
頭結點是首元結點前的結點,資料域不儲存資料,指標域指向首元結點』
頭指標是指向鍊錶中第乙個結點的指標,或為頭節點或為首元結點
(1)在順序表中插入或者刪除元素,需要平均移動n/2個元素,具體移動的元素個數與插入或者刪除的位置有關
順序表中,各元素物理位置上彼此相鄰,鍊錶中並不一定相鄰
鍊錶中,除了首元結點外,任一節點的位置由指標指示。
在單鏈表中設定頭結點的作用是插入或者刪除首元結點時不需要特殊處
理。1\迴圈佇列頭、尾指標的變化規律;隊空與隊滿的判斷條件q.near 隊尾 q.front 隊首
if((q.near+1)%size ==q.front) 佇列滿
q.base[q.rear]=e
q.rear=(q.rear+1)%size
2\入棧和出棧操作的過程和規律
後進先出
3\作業中的基礎知識題
3.2(1)線性表
用一組位址連續的儲存單元依次儲存線性表的資料元素。以元素在計算機內「物理位置相鄰」來表示線性表中資料元素之間的邏輯關係。只要確定了資料元素的起始位置,就可隨機地訪問資料元素。但是這種表示方法不便於插入和刪除元素,每插入或刪除乙個元素,都要移動插入或刪除位置之後的資料元素在連續儲存單元中的位置,而且除了重新分配記憶體,否則在程式執行過程中不能動態地增加儲存單元的數量。
(2)棧
和線性表相似,棧也有兩種儲存方式,順序棧和鏈式棧。
順序棧的實現在於使用了陣列這個基本資料結構,陣列中的元素在記憶體中的儲存位置是連續的,且編譯器要求我們在編譯期就要確定陣列的大小,這樣對記憶體的使用效率並不高,一來無法避免因陣列空間用光而引起的溢位問題,二在系統將記憶體分配給陣列後,則這些記憶體對於其他任務就不可用;而鏈棧使用了鍊錶來實現棧,鍊錶中的元素儲存在不連續的位址,由於是動態申請記憶體,所以我們可以以非常小的記憶體空間開始,另外當某個項不使用時也可將記憶體返還給系統。
1\二叉樹的性質
第i層至多有2的(i-1)次方個結點
深度為k的二叉樹結點最大為2的k次方-1
終端結點為n個,度為2的結點數為k個,則n=k+1
具有n個結點的完全二叉樹深度為[log₂n]+1
左右結點和根結點的關係
2\二叉樹的另外兩種儲存方式
順序儲存結構,鏈式儲存結構
3\給定中序+先序(後序),畫出二叉樹
中序,左中右,先中序左子樹,再訪問根節點,再中序右子樹
先序,中左右,先訪問根結點,再先序訪問左子樹,再先序訪問右子樹
後序,左右中,後序左子樹,後序右子樹,再訪問根結點
1.先在先序子串行中找到當前子樹的根節點,即先序子串行的第乙個節點是當前子樹根節點
2.在中序子串行中找到當前根節點的位置,並返回下標
3.根據中序子串行中的當前子樹根節點的位置,得到子樹的左子樹和右子樹
4.根據當前子樹的左右子樹,分別得到其在先序子串行和中序子串行中開始索引和結束索引
5.根據得到的索引,判斷左右子樹是否為空,如果不為空則返回第一步繼續執行,如果為空直接返回。
後序同理
4\二叉樹與森林之間的相互轉換
使用左孩子右兄弟法
5\哈夫曼樹
6\基本知識點
6.19 樹與二叉樹之間的轉換 左孩子右兄弟法
第七章 圖
1、圖的相關概念
頂點,弧,弧尾,弧頭
無向圖,有向圖,完全圖,有向完全圖,稀疏圖,稠密圖
連通分量,強連通分量 最小生成樹(prim或者kruskal)
2、圖的儲存結構
鄰接表,鄰接矩陣,逆鄰接表
3、圖的遍歷
深度,就是一直搜下去,找與之鄰接的頂點
廣度,將層數一樣的搜出來,在接著搜下一層
4、求有向圖的拓撲排序序列
在圖中找到乙個沒有前驅的頂點並將其輸出;在圖中刪除該頂點和所有以它為尾的弧
1、靜態查詢
1.順序查詢,就是按index(序號)查詢;2.折半查詢,二分;3.分塊查詢,構造索引,分塊中最大值/最小值為索引。
2、雜湊函式構造方法
1.直接定址;2.數字分析(不重要);3.平方取中;4.除留餘數5.摺疊6.隨機數
3、雜湊構造時處理矛盾的方法
1.開放定址,其實就是對矛盾的數值根據一定的計算重新找到乙個未被用過的位址
2.再雜湊,在產生矛盾時計算另乙個構造雜湊函式的方法
3.鏈位址,感覺有點像圖的鄰接表儲存的模型,只是模型
4.公共溢位區,再開出一塊空間,放矛盾的值
4、基礎知識點
9.21 根據首字母排序 開放定址法,使用線性探測就可以
第十章 內部排序
1、排序的方法
(1)插入排序
1.直接插入排序
關鍵步驟 將需要插入的數字,從它原先序列的前乙個位置開始向前比較
希爾排序
d[1]=k 首先將序列分成k個組
3.起泡排序,冒泡
4.快速排序
開始,從j開始比較,找到小的,交換,並從i開始比較;同理,又從j開始比較,直到i j重合
5.簡單選擇排序
從 後n-i+1的機率中找出最小值,與第i個記錄進行交換
6.堆排序
主要是了解堆建立的過程
在輸出堆頂元素後,將最末位的元素交換到堆頂,再進行down操作
7.歸併排序
將一維陣列中相鄰的兩個有序序列歸併成乙個有序序列
開始,乙個元素即為乙個有序序列,所以第一次排序為兩兩元素結合
8.基數排序
資料結構知識點複習
一 綜述 資料結構作為軟體開發的必須基礎,不僅實用,一般找工作時也常常考到。因此寫篇文章,梳理一下資料結構這個知識點的基本框架與結構。程式設計 資料結構 演算法 資料結構 存在特定關係的資料元素的集合 邏輯結構包含 集合結構 線性結構 樹結構和圖結構 物理結構包括順序儲存於鏈式儲存 演算法特點 輸入...
資料結構 複習知識點彙總
1 用鍊錶表示線性表的優點是 便於插入和刪除操作 2 單鏈表中,增加頭結點的目的是 方便運算的實現 3 棧和佇列的共同特點是 只允許在端點處插入和刪除元素 4 棧通常採用的兩種儲存結構是 線性儲存結構和鍊錶儲存結構 5 佇列具有 先進先出 的特徵,棧具有 後進先出 的特徵。6 鍊錶 插入和刪除不需要...
資料結構期末複習
1 基於鄰接表 2struct vertexnode3 7struct edgenode8 12struct vertexnode adjlist 100 13 int visited 100 14 void gs int a,int n,int e 15 22for k 0 k e k 2330 ...