鍊錶的分類
單鏈表
單鏈表是一種鏈式訪問的結構,為找第 i 個資料元素,必須先找到第 i-1 個資料元素。圖中陰影區域表示資料域,空白區表示指標域。而且最後乙個指標域為空。
迴圈鍊錶
迴圈鍊錶是另一種形式的鏈式存貯結構。它的特點是表中最後乙個結點的指標域指向頭結點,整個鍊錶形成乙個環。迴圈鍊錶又分為單迴圈鍊錶和多重鏈的迴圈鍊錶。
雙鏈表
雙鏈表也稱為雙向鍊錶,是鍊錶的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向鍊錶中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。雙鏈表的靈活度要比單鏈表好一些,但開支要大一些(存在兩個指標)。
順序表與鍊錶的比較
順序表儲存位置是相鄰連續的,可以隨即訪問的一種資料結構,乙個順序表在使用前必須指定起長度,一旦分配記憶體,則在使用中不可以動態的更改。他的優點是訪問資料是比較方便,可以隨即的訪問表中的任何乙個資料。
鍊錶是通過指標來描述元素關係的一種資料結構,他可以是實體地址不連續的物理空間。不能隨即訪問鍊錶元素,必須從表頭開始,一步一步搜尋元素。它的優點是:對於陣列,可以動態的改變資料的長度,分配物理空間。
在使用中:如果乙個陣列在使用中,查詢比較多,而插入,刪除資料比較少,陣列的長度不變時,選順序表比較合理。如果插入,刪除,長度不定的陣列,可以選煉表。
樹(tree)
樹是包含n(n>0)個結點的有窮集合k,且在k中定義了乙個關係n,n滿足 以下條件:
(1)有且僅有乙個結點 k0,他對於關係n來說沒有前驅,稱k0為樹的根結點。簡稱為根(root)。
(2)除k0外,k中的每個結點,對於關係n來說有且僅有乙個前驅。
(3)k中各結點,對關係n來說可以有m個後繼(m>=0)。
樹具有以下特點:
(1) 每個節點有零個或多個子節點。
(2) 每個子節點只有乙個父節點。
(3) 沒有父節點的節點稱為根節點。
關於樹的一些術語
節點的度:乙個節點含有的子樹的個數稱為該節點的度(有多少個孩子);
葉節點或終端節點:度為零的節點稱為葉節點;
非終端節點或分支節點:度不為零的節點;
雙親節點或父節點:若乙個結點含有子節點,則這個節點稱為其子節點的父節點;
孩子節點或子節點:乙個節點含有的子樹的根節點稱為該節點的子節點;
兄弟節點:具有相同父節點的節點互稱為兄弟節點;
樹的高度或深度:定義一棵樹的根結點層次為1,其他節點的層次是其父結點層次加1。一棵樹中所有結點的層次的最大值稱為這棵樹的深度。節點的層次:從根開始定義起,根為第1層,根的子結點為第2層,以此類推;
樹的度:一棵樹中,最大的節點的度稱為樹的度;最大
節點的祖先:從根到該節點所經分支上的所有節點;往上
子孫:以某節點為根的子樹中任一節點都稱為該節點的子孫。往下
森林:由m(m>=0)棵互不相交的樹的集合稱為森林;
樹的遍歷
樹的遍歷分為:前序遍歷、後序遍歷、層次遍歷。前序遍歷的遍歷順序是先訪問根結點,再訪問葉子結點;後序遍歷的遍歷順序是先訪問葉子結點,再訪問根結點;而層次遍歷則是按層次進行遍歷。
2,3,4儲存到所定義的佇列中;
二叉樹
二叉樹是每個節點最多有兩個子樹的有序樹。通常子樹被稱作「左子樹」(left subtree)和「右子樹」(right subtree)。二叉樹又分為滿二叉樹、完全二叉樹、非完全二叉樹等。
圖(graph)
圖是由結點的有窮集合v和邊的集合e組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。其中,圖分為無向圖和有向圖。
圖的遍歷
圖的遍歷分為深度優先遍歷和廣度優先遍歷。深度優先遍歷的思想類似於樹的先序遍歷。其遍歷過程可以描述為:從圖中某個頂點v出發,訪問該頂點,然後依次從v的未被訪問的鄰接點出發繼續深度優先遍歷圖中的其餘頂點,直至圖中所有與v有路徑相通的頂點都被訪問完為止。
廣度優先遍歷方法描述為:從圖中某個頂點v出發,在訪問該頂點v之後,依次訪問v的所有未被訪問過的鄰接點,然後再訪問每個鄰接點的鄰接點,且訪問順序應保持先被訪問的頂點其鄰接點也優先被訪問,直到圖中的所有頂點都被訪問為止。
資料結構基礎知識
時間複雜度和空間複雜度 同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測...
資料結構基礎知識
一種資料的邏輯結根據需要可以表示成多種儲存結構,常用的儲存結構有順序儲存 鏈結儲存 索引儲存等,採用不同的資料結構,其資料處理的效率是不同的。線性表是一種常用的資料結構。在實際應用中,線性表都是以棧 佇列 字串 陣列等特殊線性表的形式來使用的。線性表是一種線性結構。線性表有順序儲存結構和鏈式儲存結構...
資料結構基礎知識
簡單的說,資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和操作等的學科。描述一類非數值計算問題的數學模型不再是數學方程,而是諸如表 樹和圖之類的資料結構。資料結構 的研究不僅涉及到計算機硬體 特別是編碼理論 儲存裝置和訪問方法等 的研究範圍,而且和計算機軟體的研究有著...