示例#1
0
        public LinkedList<T> InsertAfter(T key, T value)
        {
            Node insert = this.Head;
            insert.Value = value;
            while (!insert.Equals(null) && !insert.Value.Equals(key))
            {
                insert = insert.Next;
            }

            insert.Next = new Node(value, insert.Next);
            return this;
        }
示例#2
0
        public void AddBefore(Node node, object content)
        {
            Node newNode     = new Node(content);
            Node currentNode = this.Tail;

            while (currentNode != null)
            {
                if (currentNode.Equals(node))
                {
                    newNode.PrevNode          = node.PrevNode;
                    newNode.PrevNode.NextNode = newNode;
                    newNode.NextNode          = node;
                    node.PrevNode             = newNode;
                    break;
                }
                currentNode = currentNode.NextNode;
            }
        }
示例#3
0
        public bool Remove(T item)
        {
            Node <T> current  = Head;
            Node <T> previous = null;

            while (current != null)
            {
                if (current.Value.Equals(item))
                {
                    Count--;
                    // Если узел в начале
                    if (current.Equals(Head))
                    {
                        Head = Head.Next;
                        if (Head == null)
                        {
                            Tail = null;
                        }
                        return(true);
                    }
                    // Если узел в конце
                    if (current.Next == null)
                    {
                        previous.Next = null;
                        Tail          = previous;
                        return(true);
                    }
                    //Если в середине
                    previous.Next = current.Next;
                    return(true);
                }

                current  = current.Next;
                previous = current;
            }


            return(false);
        }