首页 > 代码库 > 从链表说起

从链表说起

链表可以说在数据结构中拥有很广泛的应用

它是一个非常好的容器,它和传统的数组相比较,它具有良好的可变性

链表最基础的功能是增删改查,关于查找,C#提供了一种属性 索引函数

然后,它的基本形式如下

首先 ,我们应该用一个节点来存储信息,我使用泛型的节点

class Node<T>
    {
        public T Data;
        public Node<T> Next;
         public Node()
        {

        }
        public Node(T Data)
        {
            this.Data =http://www.mamicode.com/ Data;
        }
}

然后便是链表

public delegate bool CompareTool<T>(T a, T b);
  public delegate void ShowInfo<T>(T a, T b);
    class LinkList<T>
    {
        protected Node<T> Head;
        protected int _length;
        
        public CompareTool<T> CTool;
        public delegate void ShowInfo<L>(L a);
        public ShowInfo<T> SI;

        public T this[int Index]
        {
            get => Find(Index);
        }
        
        public int Length { get => _length; }

        public LinkList()
        {
            Head = new Node<T>();
            _length = -1;
        }

        public LinkList(T a)
        {
            Head = new Node<T>();
           Head.Next=new Node<T>()
           {
    Data=a
           }
            _length = 0;
        }

        public void Enter(T Ves)
        {
            Enter(Ves, -2);
        }

        public virtual void Enter(T Ves,int pos)
        {
            Node<T> a = new Node<T>(Ves);
            if (pos == -3)//按序插
            {
             }
            else if (pos == -2)//插头
            {
             }
            else if (pos == -1)//插尾
            {
            }
            else//指定位置
            {
             }
        }

        public virtual T Find(int Index)
        {
         }

        public T Out()
        {
            return Out(-2);
        }

        public virtual T Out(int pos)
        {
            Node<T> temp;
            if (pos == -2)//删头
            {
             }
            else if (pos == -1)//删尾
            {
             }
            else//指定位置
            {
             }
            _length--;
            return temp.Data;
        }

        public void Serialize()
        {
            
        }

        public void Deserialize()
        {
        }

        public bool CompareTo(T Value)
        {
            return CTool(Head.Data,Value);
        }

        public void Show()
        {
            Node<T> a = Head;
            while(a!=null)
            {
                SI(a.Data);
                a = a.Next;
            }
            
        }
    }

从链表说起