資料結構基礎知識(2)

來源:互聯網
上載者:User

內容接自《資料結構基礎知識(1)》。。。

鏈表的分類

單鏈表

      單鏈表是一種鏈式存取的結構,為找第 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)棵互不相交的樹的集合稱為森林;

樹的遍曆

       樹的遍曆分為:前序走訪、後序遍曆、層次遍曆。前序走訪的遍曆順序是先訪問根結點,再訪問葉子結點;後序遍曆的遍曆順序是先訪問葉子結點,再訪問根結點;而層次遍曆則是按層次進行遍曆。


二叉樹

         二叉樹是每個節點最多有兩個子樹的有序樹。通常子樹被稱作“左子樹”(left subtree)和“右子樹”(right subtree)。二叉樹又分為滿二叉樹、完全二叉樹、非完全二叉樹等。


圖(Graph)

       圖是由結點的有窮集合V和邊的集合E組成。其中,為了與樹形結構加以區別,在圖結構中常常將結點稱為頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係。其中,圖分為無向圖和有向圖。


圖的遍曆

        圖的遍曆分為深度優先遍曆和廣度優先遍曆。深度優先遍曆的思想類似於樹的先序遍曆。其遍曆過程可以描述為:某個頂點v出發,訪問該頂點,然後依次從v的未被訪問的鄰接點出發繼續深度優先遍曆圖中的其餘頂點,直至圖中所有與v有路徑相通的頂點都被訪問完為止。

       廣度優先遍曆方法描述為:某個頂點v出發,在訪問該頂點v之後,依次訪問v的所有未被訪問過的鄰接點,然後再訪問每個鄰接點的鄰接點,且訪問順序應保持先被訪問的頂點其鄰接點也優先被訪問,直到圖中的所有頂點都被訪問為止。


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.