Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lấy nút đầu tiên (First Node) của LinkedList trong C#

Giới thiệu

Để lấy nút đầu tiên (first node) của LinkedList<T>, sử dụng thuộc tính First trả về LinkedListNode<T>. Truy cập giá trị qua First.Value.

Ví dụ 1: LinkedList chuỗi cơ bản

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        LinkedList list = new LinkedList();
        list.AddLast("A");
        list.AddLast("B");
        list.AddLast("C");
        list.AddLast("D");
        list.AddLast("E");
        list.AddLast("F");
        list.AddLast("G");
        list.AddLast("H");
        list.AddLast("I");
        list.AddLast("J");

        Console.WriteLine("Số lượng nút = " + list.Count);
        Console.WriteLine("Nút đầu tiên (First) = " + list.First.Value);

        list.Clear();
        Console.WriteLine("Số lượng nút (sau Clear) = " + list.Count);
    }
}

Đầu ra ví dụ 1

Số lượng nút = 10
Nút đầu tiên (First) = A
Số lượng nút (sau Clear) = 0

Ví dụ 2: LinkedList số nguyên với First và Last

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        LinkedList list = new LinkedList();
        list.AddLast(100);
        list.AddLast(200);
        list.AddLast(300);
        list.AddLast(400);
        list.AddLast(500);
        list.AddLast(600);
        list.AddLast(700);
        list.AddLast(800);
        list.AddLast(900);
        list.AddLast(1000);

        Console.WriteLine("Số lượng nút = " + list.Count);
        Console.WriteLine("Nút đầu tiên (First) = " + list.First.Value);
        Console.WriteLine("Nút cuối cùng (Last) = " + list.Last.Value);

        list.Clear();
        Console.WriteLine("Số lượng nút (sau Clear) = " + list.Count);
    }
}

Đầu ra ví dụ 2

Số lượng nút = 10
Nút đầu tiên (First) = 100
Nút cuối cùng (Last) = 1000
Số lượng nút (sau Clear) = 0

Các thuộc tính và phương thức liên quan đến Node

Thành viênKiểu trả vềMô tả
FirstLinkedListNode<T>Nút đầu tiên (head), null nếu rỗng
LastLinkedListNode<T>Nút cuối cùng (tail), null nếu rỗng
AddFirst(T)LinkedListNode<T>Thêm nút ở đầu, trả về nút mới
AddLast(T)LinkedListNode<T>Thêm nút ở cuối, trả về nút mới
AddAfter(node, T)LinkedListNode<T>Thêm sau nút chỉ định
AddBefore(node, T)LinkedListNode<T>Thêm trước nút chỉ định
RemoveFirst()voidXóa nút đầu
RemoveLast()voidXóa nút cuối
Remove(node)boolXóa nút cụ thể
Find(T)LinkedListNode<T>Tìm nút đầu tiên có giá trị T
FindLast(T)LinkedListNode<T>Tìm nút cuối cùng có giá trị T

Cấu trúc LinkedListNode<T>

public sealed class LinkedListNode<T> {
    public LinkedList<T> List { get; }      // List chứa node này
    public LinkedListNode<T> Next { get; }   // Nút kế tiếp (null nếu tail)
    public LinkedListNode<T> Previous { get; } // Nút trước (null nếu head)
    public T Value { get; set; }             // Giá trị lưu trữ
}

Lưu ý quan trọng

  • Nếu list rỗng (Count == 0), First và Last trả về null. Truy cập .Value sẽ ném NullReferenceException.
  • LinkedList<T> là double-linked list (danh sách liên kết đôi).
  • Không hỗ trợ truy cập bằng index (không có []). Duyệt qua foreach hoặc node Next/Previous.
  • Insert/Remove ở giữa O(1) nếu đã có reference đến node (khác List O(n)).
  • Không có Capacity, mở rộng tự động.

Ứng dụng thực tế

  • LRU Cache: di chuyển node truy cập gần nhất lên First.
  • Undo/Redo: duyệt Previous/Next.
  • Playlist, browser history: điều hướng qua lại.
  • Memory pool, free list management.