《資料結構與演算法C 語言描述》筆記11 鍊錶

2021-06-10 00:40:25 字數 2936 閱讀 7277

兩種不同的實現:基於物件的鍊錶、基於陣列的鍊錶

在無需陣列中查詢乙個資料項是很慢的;有序(排序)陣列對查詢而言會更加高效,但是插入和刪除操作還是很慢。

鍊錶是被稱為節點的類物件的群集。每個節點通過乙個鏈結到列表內的後記節點。

節點包括儲存資料的字段節點引用的字段。節點引用的字段被稱為是鏈結。

對鍊錶結尾的標記,是通過指向空(null)值實現的。

節點

鍊錶多個節點之間的鏈結。這個鍊錶類包括幾種方法:把節點新增到鍊錶的方法、從鍊錶中移除節點的方法、遍歷鍊錶的方法、找到鍊錶內節點的方法。還包括唯一的資料成員:頭節點

鍊錶設計的改進方案:

增加了乙個指向前乙個節點的鏈結。

把尾節點指向首節點。

.net框架庫是用迴圈鍊錶的設計來實現arraylist資料結構的。

linkedlist表示乙個雙向鍊錶。

linkedlistnode類則表示 linkedlist中的節點。

namespace system.collections.generic

// 摘要:

//    

表示雙向鍊錶。 //

// 型別引數:

//   t:

//    

指定鍊錶的元素型別。

public

class

linkedlist

: icollection

,ienumerable

,icollection, ienumerable,iserializable,ideserializationcallback

// 摘要:

//    

表示system.collections.generic.linkedlist

中的節點。無法繼承此類。 //

// 型別引數:

//   t:

//    

指定鍊錶的元素型別。

[comvisible(false)]

public

sealed

class

linkedlistnode

count屬性,獲取linkedlist 中實際包含的節點數。

first屬性,獲取linkedlist 的第乙個節點。

last屬性,獲取linkedlist 的最後乙個節點。

addafter方法,在 linkedlist 中的現有節點後新增新的節點或值。

addbefore方法,在 linkedlist 中的現有節點前新增新的節點或值。

addfirst方法,在 linkedlist 的開頭處新增新的節點或值。

addlast方法,在 linkedlist 的結尾處新增新的節點或值。

clear方法,從 linkedlist 中移除所有節點。

contains方法,確定某值是否在 linkedlist 中。

copyto 方法,從目標陣列的指定索引處開始將整個 linkedlist 複製到相容的一維array。

find方法,查詢包含指定值的第乙個節點。

findlast方法,查詢包含指定值的最後乙個節點。

getenumerator方法,返回迴圈訪問 linkedlist 的列舉數。

remove方法,從 linkedlist 中移除節點或值的第乙個匹配項。

removefirst方法,移除位於 linkedlist 開頭處的節點。

removelast方法,移除位於 linkedlist 結尾處的節點。

list屬性,獲取linkedlistnode所屬的linkedlist。

next屬性,獲取linkedlist中的下乙個節點。

previous 屬性,獲取linkedlist中的上乙個節點。

value屬性,獲取節點中包含的值。

linkedlist

ll =new

linkedlist

();///

雙向鍊錶

linkedlistnode

lln =new

linkedlistnode

(12);

linkedlistnode

lln1 =new

linkedlistnode

(22);

linkedlistnode

lln2 =new

linkedlistnode

(32);

linkedlistnode

lln3 =new

linkedlistnode

(42);

ll.addfirst(lln);

ll.addfirst(lln1);

ll.addfirst(lln2);

ll.addfirst(lln3);

ll.addafter(lln2, 2);

ll.addlast(new

linkedlistnode

(-2));

ll.addlast(new

linkedlistnode

(2));

ll.removefirst();

ll.remove(ll.find(2));

linkedlistnode

onenode =new

linkedlistnode

(0);

///遍歷

onenode = ll.first;

while (onenode != null)

///32

///22

///12

///-2

///2

資料結構與演算法分析 C語言描述

第一種方法,先進行排序,再返回位置k上的元素。簡單排序問題 第二種方法,先將前k個元素讀入,再將剩下的元素逐個讀入,如果新元素大於陣列中第k個元素就找到他合適的位置並將陣列中的乙個元素擠出。第三種方法,利用快排的特點 假設預設公升序排序 每一次快排操作都能確定乙個數在排序結果中的最終固定位置,即該位...

資料結構與演算法分析 c 語言描述

編寫帶有下列宣告的兩個例程 void permute string str void permute char str,int low,int high 第乙個例程是個驅動程式,它呼叫第二個例程並顯示string str中字元的所有排列。例如,str是 abc 那麼輸出的串則是abc,acb,bac...

《資料結構與演算法分析(C 語言描述)》

第1章 uml教程 更多軟體恐怖故事 nist新聞稿 軟體錯誤每年給美國經濟造成595億美元的損失 nist報告本身 pdf 第2章 ieee對實數的反感 c 的按位運算子 第3章 工會 記憶體結構 第5章模式匹配 資料加密 第9章用位集實現集 有關valarrays的更多資訊 第10章 用於解析表...