亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

利用C#雙向鏈表優化數據結構

c#
小樊
82
2024-08-29 04:49:00
欄目: 編程語言

在C#中,雙向鏈表是一種常見的數據結構,它可以高效地在列表的任意位置插入或刪除元素

首先,我們需要創建一個表示鏈表節點的類:

public class ListNode<T>
{
    public T Value;
    public ListNode<T> Prev;
    public ListNode<T> Next;

    public ListNode(T value)
    {
        Value = value;
        Prev = null;
        Next = null;
    }
}

接下來,我們創建一個雙向鏈表類,實現基本的操作方法,如添加、刪除和查找節點:

public class DoublyLinkedList<T>
{
    private ListNode<T> _head;
    private ListNode<T> _tail;
    private int _count;

    public DoublyLinkedList()
    {
        _head = null;
        _tail = null;
        _count = 0;
    }

    public void AddFirst(T value)
    {
        var newNode = new ListNode<T>(value);
        if (_head == null)
        {
            _head = newNode;
            _tail = newNode;
        }
        else
        {
            newNode.Next = _head;
            _head.Prev = newNode;
            _head = newNode;
        }
        _count++;
    }

    public void AddLast(T value)
    {
        var newNode = new ListNode<T>(value);
        if (_tail == null)
        {
            _head = newNode;
            _tail = newNode;
        }
        else
        {
            newNode.Prev = _tail;
            _tail.Next = newNode;
            _tail = newNode;
        }
        _count++;
    }

    public bool Remove(T value)
    {
        var node = Find(value);
        if (node == null) return false;

        if (node.Prev != null)
        {
            node.Prev.Next = node.Next;
        }
        else
        {
            _head = node.Next;
        }

        if (node.Next != null)
        {
            node.Next.Prev = node.Prev;
        }
        else
        {
            _tail = node.Prev;
        }

        _count--;
        return true;
    }

    public ListNode<T> Find(T value)
    {
        var current = _head;
        while (current != null)
        {
            if (current.Value.Equals(value)) return current;
            current = current.Next;
        }
        return null;
    }

    public int Count => _count;
}

這個雙向鏈表類提供了基本的添加、刪除和查找功能。你可以根據需要對其進行擴展,例如實現更復雜的查找算法、支持索引訪問等。使用這個雙向鏈表類,你可以輕松地在C#中創建和優化數據結構。

0
彰化县| 大港区| 陇川县| 安吉县| 承德县| 新密市| 龙川县| 龙泉市| 沁水县| 阿坝| 重庆市| 迭部县| 临潭县| 南昌市| 新和县| 南陵县| 綦江县| 东乌| 宁安市| 乃东县| 顺义区| 霍山县| 焉耆| 三穗县| 乌拉特中旗| 邵阳市| 辽阳县| 上蔡县| 西吉县| 甘孜| 吉木萨尔县| 巴彦淖尔市| 兴安县| 天峻县| 永善县| 紫阳县| 鹿泉市| 云南省| 萨嘎县| 千阳县| 巴塘县|