示例#1
0
文件: LinkList.cs 项目: Fronox/Task1
        public void Prepend(T value)
        {
            if (head == null)
            {
                head = new LinkListNode <T>
                {
                    Value = value
                };
                return;
            }
            var temp = new LinkListNode <T>
            {
                Value = value,
                Next  = head
            };

            head = temp;
        }
示例#2
0
文件: LinkList.cs 项目: Fronox/Task1
        public void Add(T value)
        {
            var newEl = new LinkListNode <T>
            {
                Value = value
            };

            var temp = head;

            if (temp == null)
            {
                head = newEl;
                return;
            }

            while (temp.Next != null)
            {
                temp = temp.Next;
            }

            temp.Next = newEl;
        }
示例#3
0
        public void AddAfter(LinkListNode <T> node, LinkListNode <T> newNode)
        {
            if (newNode.List != null || (node?.List ?? this) != this)
            {
                return;
            }

            if (First == null || Last == null)
            {
                First = Last = newNode;
            }
            else if (node == null)
            {
                newNode.Next   = First;
                First.Previous = newNode;
                First          = newNode;
            }
            else
            {
                if (node.Next is LinkListNode <T> nextNode)
                {
                    nextNode.Previous = newNode;
                    newNode.Next      = nextNode;
                }
                else
                {
                    Last = newNode;
                }

                newNode.Previous = node;
                node.Next        = newNode;
            }

            newNode.List = this;
            Count++;
        }
示例#4
0
 public void AddLast(LinkListNode <T> node) => AddAfter(Last, node);
示例#5
0
 public void AddFirst(LinkListNode <T> node) => AddBefore(First, node);
示例#6
0
 public void AddBefore(LinkListNode <T> node, LinkListNode <T> newNode) => AddAfter(node?.Previous, newNode);
示例#7
0
 private void ClearNode(LinkListNode <T> node)
 {
     node.Previous = node.Next = null;
     node.List     = null;
 }
示例#8
0
文件: LinkList.cs 项目: Fronox/Task1
 public LinkList()
 {
     head = null;
 }
示例#9
0
文件: LinkList.cs 项目: Fronox/Task1
 private LinkList(LinkListNode <T> head)
 {
     this.head = head;
 }
示例#10
0
文件: LinkList.cs 项目: Fronox/Task1
 private void Deconstruct(out LinkListNode <T> head, out LinkList <T> tail)
 {
     head = this.head;
     tail = Tail;
 }