《数据结构》之数组结构和链表
1:間接尋址的基本概念{
間接尋址就是二級指針的利用,指向指針的指針,一維數組,二維數組。間接尋址在此特指其一維數組的含義;
間接尋址是一維和二維數組的組合。既保留了數組的許多優點,也獲得了鏈表的眾多特色。首先,可以根據索引在O(1)
的時間內詢問每個元素;其次可以采用二分在對數時間內對一個有序表進行搜索;最后,在諸如插入和刪除的操作期間
不必對元素進行實際的行動}
2:間接尋址使用指針數組來跟蹤每一個元素,對元素本身如何分配不設限制(可離散可連續)。將實體節點轉化為指針節點。
3 使用:內存池
自構建等塊內存池,每一個指針分別指向每一塊內存的首地址。內存池可以避免內存碎片和系統調用。
:散列鏈表
如果指針指向的元素包含next指針,則間接尋址就變成了散列鏈表。
4:模擬指針簡單的描述就是利用數組的下標當指針。
實現1:首先構造一個節點數組,節點包含兩個域:data和link。link域指向數組中的其他節點。和間接尋址有相似處。
實現2:數組值包含link域,可以用來模擬樹。(用來解決并查集的問題);
等價類:
定義:假定有一個具有n個元素的集合u,另有一個具有r個關系的集合r。如果(a,b)%r,則元素a和b是等價的。等價類
是指等價元素的最大集合。一言以避之,將集合u根據關系進行劃分,類內的元素等價,可以看做是一種聚類。
。離線等價類
一直n和R,確定所有的等價類。
。在線等價類
初始時有n個元素,每個元素都屬于一個獨立的等價類。然后不停地執行Find和Union操作向R中增加新關系。通常被稱為并查集問題。
5:并查集的操作:
Find:查詢元素a和b是否屬于同一類;
Union:合并元素a和b所在的lei;
并查集的實現
采用方式二的模擬指針。數組的下標即表示指針,指針的指向使并查集構成了一顆虛擬的森林。但是并查集不關注每棵樹的形狀以及
相互指向關系,只關注最終的根節點以及該樹的元素個數或者高度。
并查集的優化
可以根據重量規則或者高度規則對并查集進行優化?
6:并查集的應用
最小生成樹-Kruskal算法
算法的思想:
從n個點的圖中選擇n-1個點,每次從剩下的邊中選擇一條不會產生環路得具有最小消耗的邊加入已選擇的邊集合中
從當前選擇的邊將所有的點分成不同的類(連通分量),當判斷下一條要增加的邊的兩個點是否在同一個類中:若
在同一類中說明構成環,否則可以增加到生成樹中。
轉載于:https://www.cnblogs.com/ylllove/p/6044830.html
總結
以上是生活随笔為你收集整理的《数据结构》之数组结构和链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 依恋关系有哪四种类型
- 下一篇: node多版本管理--nvmw