C#集合----連結串列

iDotNetSpace發表於2009-05-06

LinkedList集合類沒有非泛型集合的類似版本。LinkedList是一個雙向連結串列,其元素指向它前面和後面的元素。
連結串列的優點是,如果將元素插入列表的中間位置,使用連結串列會非常快。在插入一個元素時,只需修改上一個元素的Next引用和下一個元素的Previous引用,使它們引用所插入的元素。在List和ArrayList類中,插入一個元素,需要移動該元素後面的所有元素。
當然,連結串列也有缺點。連結串列的元素只能一個接一個地訪問,這需要較長的時間來查詢位於連結串列中間或尾部的元素。
連結串列不僅能在列表中儲存元素,還可以給每個元素儲存下一個元素和上一個元素的資訊。這就是
LinkedList包含LinkedListNode型別的元素的原因。使用LinkedListNode 類,可以獲得列表中的下一個元素和上一個元素.


 

Code
 1連結串列測試#region 連結串列測試
 2/**////


 3/// 連結串列測試
 4///

 5public class TestLinkedList
 6{
 7  public void TestLinkList()
 8  {
 9    LinkedList bookList = new LinkedList();
10    Book book1 = new Book { Title = "C#高階程式設計", Book_Author = new Author { Name = "黃老邪", Address = "桃花島" }, Price = 128f };
11    Book book2 = new Book { Title = "Think in Java", Book_Author = new Author { Name = "歐陽峰", Address = "白駝山" }, Price = 138f };
12    Book book3 = new Book { Title = "silverlight", Book_Author = new Author { Name = "一燈大師", Address = "大理" }, Price = 123f };
13    Book book4 = new Book { Title = "JavaFx", Book_Author = new Author { Name = "洪七公", Address = "臨安" }, Price = 125f };
14    Book book5 = new Book { Title = "WPF", Book_Author = new Author { Name = "王重陽", Address = "臨安" }, Price = 158f };
15
16    /**////將book1新增到連結串列第一個元素
17    bookList.AddFirst(book1);
18    /**////將book2新增到連結串列第一個元素,這時原來的第一個元素會自動退後一位
19    bookList.AddFirst(book2);
20
21    /**////例項化一個LinkedListNode 物件
22    LinkedListNode node = new LinkedListNode(book3);
23
24    /**////將LinkedListNode 物件新增到連結串列最後
25    bookList.AddLast(node);
26
27    /**////在最後一個元素後追加一個元素
28    bookList.AddAfter(node, book4);
29
30    /**////在LinkedListNode 物件前插入一個元素
31    bookList.AddBefore(node, book5);
32
33    foreach (var item in bookList)
34    {
35      Console.WriteLine(item.Title);
36    }
37
38
39    /**////順序顯示
40    ///
41    Console.WriteLine("\n\n順序顯示連結串列內的元素");
42    LinkedListNode firstNode = bookList.First;
43    while (firstNode != null)
44    {
45      Console.WriteLine(firstNode.Value.Title);
46      firstNode = firstNode.Next;
47
48    }
49
50    /**////逆序顯示
51    Console.WriteLine("\n\n逆序顯示連結串列內的元素");
52    LinkedListNode lastNode = bookList.Last;
53    while (lastNode != null)
54    {
55      Console.WriteLine(lastNode.Value.Title);
56      lastNode = lastNode.Previous;
57    }
58
59
60    Console.WriteLine("\n\n排序後的結果");
61
62    var rderList = bookList.OrderBy(book => book.Price);
63
64    foreach (var item in orderList)
65    {
66      Console.WriteLine(string.Format("圖書名稱{0},價格{1}", item.Title, item.Price));
67    }
68
69
70  }
71
72}
73
74#endregion
75

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-594316/,如需轉載,請註明出處,否則將追究法律責任。

相關文章