Esempio n. 1
0
        public DoubleLinkedListNode <T> AddToTail(DoubleLinkedListNode <T> pNode)
        {
            if (pNode == null)
            {
                return(null);
            }

            pNode.next = null;
            if (Tail == null)
            {
                Head = Tail = pNode;
            }
            else
            {
                pNode.prev = Tail;
                Tail.next  = pNode;
                Tail       = pNode;
            }

            count++;
            return(pNode);
        }
Esempio n. 2
0
        public DoubleLinkedListNode <T> AddToHeader(DoubleLinkedListNode <T> pNode)
        {
            if (pNode == null)
            {
                return(null);
            }

            pNode.prev = null;
            if (Head == null)
            {
                Head = Tail = pNode;
            }
            else
            {
                pNode.next = Head;
                Head.prev  = pNode;
                Head       = pNode;
            }

            count++;
            return(pNode);
        }
Esempio n. 3
0
        public void MoveToHead(DoubleLinkedListNode <T> pNode)
        {
            if (pNode == null || pNode == Head)
            {
                return;
            }

            if (pNode.prev == null && pNode.next == null)
            {
                return;
            }

            if (pNode == Tail)
            {
                Tail = pNode.prev;
            }

            if (pNode.prev != null)
            {
                pNode.prev.next = pNode.next;
            }

            if (pNode.next != null)
            {
                pNode.next.prev = pNode.prev;
            }

            pNode.prev = null;
            pNode.next = Head;
            Head.prev  = pNode;
            Head       = pNode;
            if (Tail == null)
            {
                Tail = Head;
            }
        }