C# cơ bản .NET Core
Queue / Stack (Bài trước)

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


Đăng ký nhận bài viết mới
Queue / Stack (Bài trước)