如何在 c# 中使单个链表通用

本文关键字:单个 链表 | 更新日期: 2023-09-27 18:36:13

我有一个单一链表的实现,它可以很好地处理int。我想让它成为没有继承的泛型。我用于测试的数据是电信号,我需要测量填充它的执行时间。我不需要添加任何新方法,一切都很好,只需要将其作为模板/泛型即可。我怎样才能做到这一点?谢谢。

这是我的代码...

public class LinkedList
    {
        //structure
        private Node head;
        private int count;
        public LinkedList()
        {
            //constructor
        }
        public bool IsEmpty
        {
            //check if list is empty or not
        }
        public int Count
        {
            //count items in the list
        }
        public object Add(int index, object o)
        {
            //add items to the list from beginning/end  
        }
        public object Delete(int index)
        {
            //delete items of the list from beginning/end   
        }
        public void Clear()
        {
            //clear the list    
        }
    }

如何在 c# 中使单个链表通用

你的LinkedList应该看起来像这样

public class LinkedList<T>
{
    public class Node<T>
    {
        public T data;
        public Node<T> next;
    }
    //structure
    private Node<T> head;
    private int count;
    public LinkedList()
    {
        //constructor
    }
    public bool IsEmpty
    {
        //check if list is empty or not
    }
    public int Count
    {
        //count items in the list
    }
    public T Add(int index, T o)
    {
        //add items to the list from beginning/end  
    }
    public T Delete(int index)
    {
        //delete items to the list from beginning/end   
    }
    public void Clear()
    {
        //clear the list    
    }
}

我在这里实现了一个 https://codereview.stackexchange.com/questions/138142/linked-list-in-c

  1. 将链表元素类型的所有实例从 int 更改为 T 。(不要盲目地更改所有int - 只更改用于保存元素的元素。因此,例如,不要更改countindex
  2. 将类声明更改为public class LinkedList<T>
  3. 尝试编译它并修复任何错误。
  4. 更新单元测试以便它们进行编译,并确保它们仍然全部通过。 (你的链表确实有单元测试,对吧? ;)

我不确定您的object参数。也许它们也应该改为T

您没有显示Node实现,但我猜您必须为此做类似的事情:使其Node<T>等。

类声明为 LinkedList<T> ,其中 T 是泛型类型,然后修改 Add 方法以接受类型为 Tpublic object Add(int index, T element)

的对象