Cần sử dụng 2 namspace sau:
using System.Collections; using System.Collections.Generic;
LinkedList trong C#
Trong thư viện .NET cung cấp lớp LinkedList<T>
là loại danh sách liên kết kép (từ
đây gọi tắt là danh sách liên kết).
Danh sách liên kết là một danh sách chứa các phần tử, mỗi phần tử trong loại
danh sách này được gọi là một nút (Node). Mỗi nút ngoài dữ liệu
của nút đó, nó sẽ gồm hai biến - một biến tham chiếu đến Node phía trước, một nút tham chiếu đến nút phía
sau.
Điều này có nghĩa, có có một nút - có thể lấy được nút phía trước nó - cứ thế cho đến nút đầu tiên, nút đầu, tương tự lấy được nút phía sau và dịch chuyển dần được về cuối.
Khai báo - khởi tạo một LinkedList, ví dụ tạo danh sách liên kết mà dữ liệu các nút có kiểu string
LinkedList<string> cacbaihoc = new LinkedList<string>();
Danh sách khởi tạo trên có dữ liệu trong các nút là kiểu string
, tuy nhiên
bản thân các nút được biểu diễn bởi lớp LinkedListNode
LinkedListNode trong C#
LinkedListNode<T>
là lớp biểu diễn NÚT trong LinkedList, các đối tượng
của LinkedListNode được tạo ra từ LinkedList. Nó có các thuộc tính sau:
Thuộc tính | Ý nghĩa |
---|---|
List |
Thuộc tính - tham chiếu (trỏ) đến LinkedList |
Value |
Thuộc tính - là dữ liệu của Node |
Next |
Thuộc tính - tham chiếu (trỏ) đến NÚT tiếp theo (phía sau) - null thì nó là nút cuối |
Previous |
Thuộc tính - tham chiếu (trỏ) đến NÚT phía trước - null thì nó là nút đầu tiên |
Một số phương thức trong LinkedList
Member | Ý nghĩa |
---|---|
Count |
Số nút trong danh sách |
First |
Nút đầu tiên của danh sách |
Last |
Nút đầu tiên của danh sách |
AddFirst(T) |
Chèn một nút có dữ liệu T vào đầu danh sách |
AddLast(T) |
Chèn một nút có dữ liệu T vào cuối danh sách |
AddAfter(Node, T) |
Chèn nút với dữ liệu T, vào sau nút Node (kiểu LinkedListNode) |
AddBefore(Node, T) |
Chèn nút với dữ liệu T, vào trước nút Node (kiểu LinkedListNode) |
Clear() |
Xóa toàn bộ danh sách |
Contains(T) |
Kiểm tra xem có nút với giá trị dữ liệu bằng T |
Remove(T) |
Xóa nút có dữ liệu bằng T |
RemoveFirst() |
Xóa nút đầu tiên |
RemoveLast() |
Xóa nút cuối cùng |
Find(T) |
Tìm một nút |
Thử tạo ra danh sách liên kết chứa tên các bài học
LinkedList<string> cacbaihoc = new LinkedList<string>(); cacbaihoc.AddFirst("Bài học 3"); // thêm vào đầu danh sach cacbaihoc.AddLast("Bài học 4"); // thêm vào cuối cacbaihoc.AddFirst("Bài học 2"); cacbaihoc.AddFirst("Bài học 1"); // Lấy phần tử đầu tiên, sau đó duyệt đến cuối Console.WriteLine("---------Nút từ đầu về cuối"); LinkedListNode<string> node = cacbaihoc.First; while (node != null) { Console.WriteLine(node.Value); node = node.Next; // node gán bằng nút sau nó } // Lấy phần tử cuối cùng, sau đó duyệt về phần tử đầu tiên Console.WriteLine("--------Nút từ cuối đến đầu"); node = cacbaihoc.Last; while (node != null) { Console.WriteLine(node.Value); node = node.Previous; // node gán bằng nút phía trước nó } /* Kết quả ---------Nút từ đầu về cuối Bài học 1 Bài học 2 Bài học 3 Bài học 4 --------Nút từ cuối đến đầu Bài học 4 Bài học 3 Bài học 2 Bài học 1 */
Tham khảo mã nguồn: CS024_SomeCollections hoặc tải về ex024