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) 訪問根結點。

相關文章
相關標籤/搜索