internal void insertAtPosotion(int num, int position)
        {
            DoublyListNode newNode = new DoublyListNode();

            newNode.read(num);

            DoublyListNode q = null;

            if (position == 1)
            {
                insertAtStart(num);
                return;
            }

            DoublyListNode temp = Head;
            int            currentPositionValue = 1;

            while (currentPositionValue < position - 1)
            {
                temp = temp.right;
                currentPositionValue++;
            }

            if (temp.right == null) // last node
            {
                insertAtEnd(num);
                return;
            }

            q = temp.right;

            newNode.left  = temp;
            temp.right    = newNode;
            newNode.right = q;
        }
예제 #2
0
 private DoublyListNode Insert(DoublyListNode root, int num)
 {
     if (root == null)
     {
         root = new DoublyListNode();
         root.read(num);
     }
     else if (num <= root.data)
     {
         root.left = Insert(root.left, num);
     }
     else
     {
         root.right = Insert(root.right, num);
     }
     return(root);
 }
        internal void insertAtStart(int num)
        {
            DoublyListNode newNode = new DoublyListNode();

            newNode.read(num);

            if (Head == null)
            {
                Head = newNode;
                return;
            }

            DoublyListNode temp = Head;

            temp.left     = newNode;
            newNode.right = temp;
            Head          = newNode;
        }
        internal void insertAtEnd(int num)
        {
            DoublyListNode newNode = new DoublyListNode();

            newNode.read(num);

            if (Head == null)
            {
                Head = newNode;
                return;
            }

            DoublyListNode temp = Head;

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

            temp.right   = newNode;
            newNode.left = temp;
        }
        public void create(int[] arr)
        {
            int arrLength = arr.Length;

            if (arrLength < 1)
            {
                Head = null;
                return;
            }

            int k = 0;

            Head = new DoublyListNode();
            Head.read(arr[k]);
            DoublyListNode temp = Head;

            for (k = 1; k < arrLength; k++)
            {
                temp.right      = new DoublyListNode();
                temp.right.left = temp;
                temp.right.read(arr[k]);
                temp = temp.right;
            }
        }
        internal void insertAtmiddle(int num)
        {
            DoublyListNode newNode = new DoublyListNode();

            newNode.read(num);

            DoublyListNode p   = Head;
            DoublyListNode q   = Head;
            DoublyListNode ptr = null;

            if (Head == null)
            {
                Head = newNode;
            }

            while (q.right != null && q.right.right != null)
            {
                ptr = p;
                p   = p.right;
                q   = q.right.right;
            }

            if (q.right != null)
            {
                ptr           = p.right;
                p.right       = newNode;
                newNode.left  = p;
                newNode.right = ptr;
            }
            else
            {
                ptr.right     = newNode;
                newNode.left  = ptr;
                newNode.right = p;
            }
        }