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:,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的C#知识点总结系列:C# 数据结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSI七层模型、数据封装与解封装过程、T
- 下一篇: Linux下CURL设置请求超时时间