LinkedList<T>集合類沒有非泛型集合的類似版本。LinkedList<T>是一個雙向鏈表,其元素指向它前面和後面的元素。
鏈表的優點是,如果將元素插入列表的中間位置,使用鏈表會非常快。在插入一個元素時,只需修改上一個元素的Next引用和下一個元素的Previous引用,使它們引用所插入的元素。在List<T>和ArrayList類中,插入一個元素,需要移動該元素後面的所有元素。
當然,鏈表也有缺點。鏈表的元素只能一個接一個地訪問,這需要較長的時間來尋找位於鏈表中間或尾部的元素。
鏈表不僅能在列表中儲存元素,還可以給每個元素儲存下一個元素和上一個元素的資訊。這就是
LinkedList<T>包含LinkedListNode<T>類型的元素的原因。使用LinkedListNode <T>類,可以獲得列表中的下一個元素和上一個元素.
1鏈表測試#region 鏈表測試<br /> 2/**//// <summary><br /> 3/// 鏈表測試<br /> 4/// </summary><br /> 5public class TestLinkedList<br /> 6{<br /> 7 public void TestLinkList()<br /> 8 {<br /> 9 LinkedList<Book> bookList = new LinkedList<Book>();<br />10 Book book1 = new Book { Title = "C#進階編程", Book_Author = new Author { Name = "黃老邪", Address = "桃花島" }, Price = 128f };<br />11 Book book2 = new Book { Title = "Think in Java", Book_Author = new Author { Name = "歐陽峰", Address = "白駝山" }, Price = 138f };<br />12 Book book3 = new Book { Title = "silverlight", Book_Author = new Author { Name = "一燈大師", Address = "大理" }, Price = 123f };<br />13 Book book4 = new Book { Title = "JavaFx", Book_Author = new Author { Name = "洪七公", Address = "臨安" }, Price = 125f };<br />14 Book book5 = new Book { Title = "WPF", Book_Author = new Author { Name = "王重陽", Address = "臨安" }, Price = 158f };<br />15<br />16 /**////將book1添加到鏈表第一個元素<br />17 bookList.AddFirst(book1);<br />18 /**////將book2添加到鏈表第一個元素,這時原來的第一個元素會自動退後一位<br />19 bookList.AddFirst(book2);<br />20<br />21 /**////執行個體化一個LinkedListNode 對象<br />22 LinkedListNode<Book> node = new LinkedListNode<Book>(book3);<br />23<br />24 /**////將LinkedListNode 對象添加到鏈表最後<br />25 bookList.AddLast(node);<br />26<br />27 /**////在最後一個元素後追加一個元素<br />28 bookList.AddAfter(node, book4);<br />29<br />30 /**////在LinkedListNode 對象前插入一個元素<br />31 bookList.AddBefore(node, book5);<br />32<br />33 foreach (var item in bookList)<br />34 {<br />35 Console.WriteLine(item.Title);<br />36 }<br />37<br />38<br />39 /**////順序顯示<br />40 ///<br />41 Console.WriteLine("/n/n順序顯示鏈表內的元素");<br />42 LinkedListNode<Book> firstNode = bookList.First;<br />43 while (firstNode != null)<br />44 {<br />45 Console.WriteLine(firstNode.Value.Title);<br />46 firstNode = firstNode.Next;<br />47<br />48 }<br />49<br />50 /**////逆序顯示<br />51 Console.WriteLine("/n/n逆序顯示鏈表內的元素");<br />52 LinkedListNode<Book> lastNode = bookList.Last;<br />53 while (lastNode != null)<br />54 {<br />55 Console.WriteLine(lastNode.Value.Title);<br />56 lastNode = lastNode.Previous;<br />57 }<br />58<br />59<br />60 Console.WriteLine("/n/n排序後的結果");<br />61<br />62 var orderList = bookList.OrderBy(book => book.Price);<br />63<br />64 foreach (var item in orderList)<br />65 {<br />66 Console.WriteLine(string.Format("圖書名稱{0},價格{1}", item.Title, item.Price));<br />67 }<br />68<br />69<br />70 }<br />71<br />72}<br />73<br />74#endregion