鏈表基礎
1.概述:C#中泛型集合中的鏈表—LinkedList 是一個雙向鏈表,其結點為LinkedListNode 結構 其中,結點結構包含:Next,Previous,Value三部分。且結點中值可以重復。
鏈表的插刪要快於Link Link實質上是順序型,可以用foreach。而鏈表不行!
2.鏈表的創建及初始化:
(1) LinkedList<類型> 鏈表名 = new LinkedList<類型> ();
(2) LinkedList<類型> 鏈表名 = new LinkedList<類型> (數組名);
注意:LinkedList<類型> 鏈表名 = new LinkedList<類型> () {值} ; 這樣是錯誤的,因為LinkedList中元素應該是結點LinkedListNode 而不能是單純的值!
- 鏈表結點的創建及初始化:
LinkedListNode<類型> 結點名 = new LinkedListNode<類型> (值);
//初建結點必須賦值,類型為只讀型,不能修改前后的指向。
4.鏈表的基本操作:
(1) 取鏈表的首位元素:鏈表名.First 鏈表名.Last //返回為結點型
(2) 鏈表結點的前后移動:結點.Next 結點.Previous //返回為結點型
(3) 統計鏈表的長度:鏈表名.Count(); //()圓括號有沒有都行
鏈表名.(LongCount()) //必須有圓括號
(4) 添加結點:
鏈表名.AddFirst(); //圓括號中為值或者是結點,添加在鏈表頭
鏈表名.AddLast(); //參數同上,添加在鏈表尾
鏈表名.AddBefore(參數一:添加位置,為結點類型,參數二:添加元素,值或者是結點類型);
鏈表名.AddAfter(參數一:添加位置,為結點類型,參數二:添加元素,值或者是結點類型);
(5) 刪除結點:
鏈表名.Remove(); //括號中值為鏈表中值,若該值存在於多個結點中,則只刪除第一個。括號中值也可以為結點類型,但是要注意這個結點必須是從原鏈表中獲取的,否則運行會出錯
鏈表名.RemoveFirst(); //刪除首結點,首結點會自動后移
鏈表名.RemoveLast(); //刪除尾結點,尾結點會自動前移
(6) 查找結點值:返回值為布爾類型
鏈表名.Contain(); 括號內為結點的值,不能是結點
(7) 查找結點:返回值為結點類型
鏈表名.Find(); 括號內為結點的值,不能是結點。若有多個結點的值相同,只返回第一個
鏈表名.FindLast(); 與Find 相同只是從后往前找
(8) 在鏈表中,要想判斷兩個結點是否為同一個結點不能用==號,要使用 結點.Equals(結點);
(9) 鏈表清空: 鏈表名.Clear();
