常见数据结构
在計算機科學中,數據結構(英語:data structure)是計算機中存儲、組織數據的方式。數據結構意味著接口或封裝:一個數據結構可被視為兩個函數之間的接口,或者是由數據類型聯合組成的存儲內容的訪問方法封裝。-- "維基百科"
1. 鏈表
鏈表是一種非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的;鏈表由一系列節點組成,每個節點包含存儲數據元素的數據域和存儲下一節點地址的指針域。由于不必按順序存儲,鏈表在插入元素時可以達到O(1),但在查找某一元素時為O(n);
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理;但是鏈表失去了數組隨機讀取的優點,同時鏈表由于增加了結點的指針域,空間開銷比較大;
單向鏈表(鏈表鏈接方向單向,訪問要從頭部開始順序讀取);
雙向鏈表(每個數據節點中都有兩個指針,一個指向直接前驅,一個指向直接后繼);
循環鏈表(表中最后一個節點的指針域指向頭節點,整個鏈表形成一個環);
2. 隊列
先進先出的線性表結構,插入在一端,刪除在另一端;
3. 棧
先進后出的線性表結構,只能在一端進行插入和刪除操作
4. 哈希表
它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度;這個映射函數叫做散列函數,存放記錄的數組叫做散列表;
5. 堆
看作一棵樹的數組對象,堆中某個節點的值總是不大于或不小于其父節點的值,堆總是一棵完全二叉樹;根節點最大的叫大根堆,根節點最小的叫小根堆;
6. 優先隊列
優先隊列中,元素被賦予優先級,當訪問元素時,具有最高優先級的元素最先刪除;常采用堆數據結構來實現;
7. 字典樹(非線性結構)
是哈希樹的變種,典型應用是用于統計,排序和保存大量的字符串(但不僅限于字符串),所以經常被搜索引擎系統用于文本詞頻統計。利用字符串的公共前綴來減少查詢時間,最大限度地減少無謂的字符串比較,查詢效率比哈希樹高;
8. 樹(非線性結構)
二分查找樹(BST,左子樹節點都比根節點小,右子樹節點都比根節點大);
平衡二叉樹(AVL,它是一棵空樹或它的左右兩個子樹的高度差(平衡因子:結點左子樹的深度減去右子樹的深度)的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹);
紅黑樹(自平衡的二叉查找樹,規則1節點是紅或黑,規則2根節點黑色,規則3每個葉子節點都是黑色的空節點(NIL),規則4每個紅色節點的兩個子節點都是黑色(不能有兩個連續的紅色節點),規則5從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點)(變色、旋轉)
9. 圖(非線性結構)
無向圖(邊沒有方向的圖);
連通圖(在無向圖中,若從頂點i到頂點j有路徑相連(當然從j到i也一定有路徑),則稱i和j是連通的;如果是有向圖,那么連接i和j的路徑中所有的邊都必須同向;如果圖中任意兩點都是連通的,那么圖被稱作連通圖。如果此圖是有向圖,則稱為強連通圖);
總結
- 上一篇: 解决oninput在输入中文时,会获取拼
- 下一篇: Eclipse3.6.2 64位启动报“