c#單鏈表怎樣刪除節(jié)點(diǎn)

c#
小樊
81
2024-10-18 11:19:23

在C#中,要?jiǎng)h除單鏈表中的節(jié)點(diǎn),首先需要找到要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)。然后將其Next指針指向要?jiǎng)h除節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn),從而跳過(guò)要?jiǎng)h除的節(jié)點(diǎn)并刪除它。以下是一個(gè)簡(jiǎn)單的示例,演示了如何從單鏈表中刪除具有特定值的節(jié)點(diǎn):

public class Node
{
    public int Value { get; set; }
    public Node Next { get; set; }
}

public class LinkedList
{
    public Node Head { get; set; }

    public void DeleteNode(int value)
    {
        if (Head == null) return;

        // 如果頭節(jié)點(diǎn)是要?jiǎng)h除的節(jié)點(diǎn)
        if (Head.Value == value)
        {
            Head = Head.Next;
            return;
        }

        // 查找要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
        Node currentNode = Head;
        while (currentNode.Next != null && currentNode.Next.Value != value)
        {
            currentNode = currentNode.Next;
        }

        // 如果找到了要?jiǎng)h除的節(jié)點(diǎn)
        if (currentNode.Next != null)
        {
            // 將前一個(gè)節(jié)點(diǎn)的Next指針指向要?jiǎng)h除節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)
            currentNode.Next = currentNode.Next.Next;
        }
    }
}

在這個(gè)示例中,我們首先定義了一個(gè)Node類(lèi),用于表示鏈表中的節(jié)點(diǎn)。然后,我們定義了一個(gè)LinkedList類(lèi),其中包含一個(gè)Head屬性,表示鏈表的頭節(jié)點(diǎn)。我們還實(shí)現(xiàn)了一個(gè)DeleteNode方法,該方法接受一個(gè)整數(shù)值作為參數(shù),用于刪除鏈表中具有該值的節(jié)點(diǎn)。

0