天天看點

C#知識點總結系列:C# 資料結構

線性表(Linear List)

         線性表是一個線性結構,它是一個含有n≥0個結點的有限序列,對于其中的結點,有且僅有一個開始結點沒有前驅但有一個後繼結點,有且僅有一個終端結點沒有後繼但有一個前驅結點,其它的結點都有且僅有一個前驅和一個後繼結點。

線性表的順序存儲結構—順序表

         線性表采用順序存儲的方式存儲就稱之為順序表。順序表是将表中的結點依次存放在計算機記憶體中一組位址連續的存儲單元中。

順序表的特點

    1.容量固定

         存儲順序表的元素需要一整塊記憶體空間,因而順序表的容量一旦确定,便不能更改。

    2.通路速度快

         假設每個元素占用的空間大小為L個位元組,其中第一個單元的存儲位址則是該結點的存儲位址,并設表中開始結點a1的存儲位址(簡稱為基位址)是LOC(a1),那麼結點ai的存儲位址LOC(ai)可通過下式計算:LOC(ai)= LOC(a1)+L*(i-1)   1≤i≤n。

數組

         線性表的順序存儲結構在C#中的最直接表現形式就是數組。在C#語言中,數組是最基礎也是存取速度最快的一種集合類型。數組是引用類型,儲存它們所需的記憶體空間會在托管堆上配置設定,一旦數組被建立,其中的所有元素将被初始化為它們的預設值。

    int[] arrayInt= new int[10];

arrayInt[6] = 5;

arrayInt[8] = 3;

         以上代碼聲明了一個值類型int的數組,并把它的長度初始化為10,最後分别給第7和第9個元素指派。

         當數組元素為值類型時,數組對象存放的是值類型對象本身。當元素為引用類型時,數組對象存放的則是對象的引用(指針)。

    Control[] arrayControl= new Control[8];

arrayControl[4] = new DropDownList();

arrayControl[6] = new TextBox();

         以上代碼聲明了一個引用類型Control的數組,并把它的長度初始化為8,最後分别給第5和第7個元素指派。兩個值是分别DropDownList和TextBox對象,雖然它們都繼承自Control類,但兩者卻是不同類,它們的大小不一樣。

ArrayList

C#中的ArrayList 的容量是根據需要自動擴充的。ArrayList 提供添加、插入或移除某一範圍元素的方法。

Insert(int index, object value)方法用于在指定索引處插入一個元素。為了保證順序表中的每個元素實體上相鄰,插入點後面的所有元素都将後移一位。

RemoveAt(int index)方法用于删除指定索引的元素,删除指定元素後,删除點後的所有元素将向前移動一位。

二叉樹

   二叉樹是樹形結構的一個重要類型。許多實際問題抽象出來的資料結構往往是二叉樹的形式,即使是一般的樹也能簡單地轉換為二叉樹,而且二叉樹的存儲結構及其算法都較為簡單,是以二叉樹顯得特别重要。

     二叉樹(BinaryTree)是n(n≥0)個結點的有限集,它或者是空集(n=0),或者由一個根結點及兩棵互不相交的、分别稱作這個根的左子樹和右子樹的二叉樹組成。

   這個定義是遞歸的。由于左、右子樹也是二叉樹, 是以子樹也可為空樹。

二叉樹的深度優先周遊

  1.先序周遊

  若二叉樹為非空,則過程為:

(1) 通路根節點。

(2) 先序周遊左子樹。

(3) 先序周遊右子樹。

  2.中序周遊

(1) 按中序周遊左子樹。

(2) 通路根結點。

(3) 按中序周遊右子樹。

  3.後序周遊

(1) 按後序周遊左子樹。

(2) 按後序周遊右子樹

(3) 通路根結點。

本文轉自程興亮部落格園部落格,原文連結http://www.cnblogs.com/chengxingliang/p/3533908.html:,如需轉載請自行聯系原作者

繼續閱讀