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); }
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); }
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(); } }
public DoublyLinkedListNode(int nodeData) { this.data = nodeData; this.next = null; this.prev = null; }
public DoublyLinkedList() { head = null; tail = null; }
public DoublyLinkedListNode(int nodeData) { data = nodeData; next = null; prev = null; }