예제 #1
0
        static DoublyLinkedListNode sortedInsert(DoublyLinkedListNode head, int data)
        {
            var newNode = new DoublyLinkedListNode(data);

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

            var node = head;

            while (true)
            {
                if (node.data > data)
                {
                    if (node.prev != null)
                    {
                        node.prev.next = newNode;
                        newNode.prev   = node.prev;
                    }
                    else
                    {
                        head = newNode;
                    }

                    node.prev    = newNode;
                    newNode.next = node;

                    break;
                }

                if (node.next == null)
                {
                    node.next    = newNode;
                    newNode.prev = node;

                    break;
                }

                node = node.next;
            }

            return(head);
        }
예제 #2
0
        static DoublyLinkedListNode SortedInsert(DoublyLinkedListNode head, int data)
        {
            DoublyLinkedListNode node = new DoublyLinkedListNode(data);

            if (head == null)
            {
                return(node);
            }

            DoublyLinkedListNode current = head;

            if (node.data < current.data)
            {
                node.next = current;

                return(node);
            }

            while (current.next != null && current.next.data < node.data)
            {
                current = current.next;
            }

            DoublyLinkedListNode next = current.next;

            current.next = node;
            node.prev    = current;
            node.next    = next;

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

            return(head);
        }
예제 #3
0
        static void Main(string[] args)
        {
            int t = Convert.ToInt32(Console.ReadLine());

            for (int tItr = 0; tItr < t; tItr++)
            {
                DoublyLinkedList llist = new DoublyLinkedList();

                int llistCount = Convert.ToInt32(Console.ReadLine());

                for (int i = 0; i < llistCount; i++)
                {
                    int llistItem = Convert.ToInt32(Console.ReadLine());
                    llist.InsertNode(llistItem);
                }

                int data = Convert.ToInt32(Console.ReadLine());

                DoublyLinkedListNode llist1 = SortedInsert(llist.head, data);

                PrintDoublyLinkedList(llist1, " ");
                Console.WriteLine();
            }
        }
예제 #4
0
 public DoublyLinkedListNode(int nodeData)
 {
     this.data = nodeData;
     this.next = null;
     this.prev = null;
 }
예제 #5
0
 public DoublyLinkedList()
 {
     head = null;
     tail = null;
 }
예제 #6
0
 public DoublyLinkedListNode(int nodeData)
 {
     data = nodeData;
     next = null;
     prev = null;
 }