線性表(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) 訪問根結點。
閱讀原文
C 資料結構知識點
資料結構 data stucture 的定義 資料結構由資料元素的集合和該集合中資料元素之間的關係組成。即。線性結構,即線性表 linearlist 陣列 array 檔案,棧 stack 佇列 queue 優先順序佇列 非線性結構 集合,圖 c 類預設訪問級別是private struct預設訪問...
資料結構知識點總結
1 樹 森林 和二叉樹可以相互轉化,規則是 左孩子右兄弟 即當前節點的左孩子在由二叉樹轉化為樹的過程中,左孩子還是當前節點的左孩子,而右節點會變成當前節點的兄弟。2 設二叉樹度為0的節點有n0個,度為2的節點為n2,則n2 n0 1 1 無向圖的資料結構是鄰接多重表,有向圖的資料結構是十字鍊錶。二者...
資料結構知識點總結
佇列 用陣列表示迴圈佇列 為了區分隊空和隊滿,入隊時少用乙個佇列元素,約定以 隊頭指標在隊尾指標的下乙個位置作為隊滿的標誌 也就是說如果隊尾快要趕上隊頭了就認為滿了 也可以通過增加乙個資料成員size,記錄佇列中元素的數量。對於佇列的鏈式儲存結構,不存在溢位的問題。廣義表 例如建立乙個廣義表 ls ...