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

时间:2016-02-25 10:45:40

标签: c# generics

我有一个单一链表的实现,可以与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    
        }
    }

3 个答案:

答案 0 :(得分:2)

你的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    
    }
}

答案 1 :(得分:1)

  1. 将链接列表的元素类型的所有实例从int更改为T。 (不要盲目地改变所有 int - 只是你用来保存元素的那些。所以不要改变count或例如index!)
  2. 将班级声明更改为public class LinkedList<T>
  3. 尝试编译并修复任何错误。
  4. 更新您的单元测试以便他们编译,并确保它们仍然全部通过。 (你对你的链表进行了单元测试,对吧?;)
  5. 我不确定您的object参数。也许他们也应该改为T

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

答案 2 :(得分:1)

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