Sort a linked list of 0s, 1s and 2s Java
- Get link
- X
- Other Apps
PROGRAM TO SORT A LINKED LIST OF 0s, 1s AND 2s
class LinkedList { Node head; // head of list /* Linked list Node*/ class Node { int data; Node next; Node(int d) {data = d; next = null; } } void sortList() { // initialise count of 0 1 and 2 as 0 int count[] = {0, 0, 0}; Node ptr = head; /* count total number of '0', '1' and '2' * count[0] will store total number of '0's * count[1] will store total number of '1's * count[2] will store total number of '2's */ while (ptr != null) { count[ptr.data]++; ptr = ptr.next; } int i = 0; ptr = head; /* Let say count[0] = n1, count[1] = n2 and count[2] = n3 * now start traversing list from head node, * 1) fill the list with 0, till n1 > 0 * 2) fill the list with 1, till n2 > 0 * 3) fill the list with 2, till n3 > 0 */ while (ptr != null) { if (count[i] == 0) i++; else { ptr.data= i; --count[i]; ptr = ptr.next; } } } /* Utility functions */ /* Inserts a new Node at front of the list. */ public void push(int new_data) { /* 1 & 2: Allocate the Node & Put in the data*/ Node new_node = new Node(new_data); /* 3. Make next of new Node as head */ new_node.next = head; /* 4. Move the head to point to new Node */ head = new_node; } /* Function to print linked list */ void printList() { Node temp = head; while (temp != null) { System.out.print(temp.data+" "); temp = temp.next; } System.out.println(); } /* Driver program to test above functions */ public static void main(String args[]) { LinkedList llist = new LinkedList(); /* Constructed Linked List is 1->2->3->4->5->6->7-> 8->8->9->null */ llist.push(0); llist.push(1); llist.push(0); llist.push(2); llist.push(1); llist.push(1); llist.push(2); llist.push(1); llist.push(2); System.out.println("Linked List before sorting"); llist.printList(); llist.sortList(); System.out.println("Linked List after sorting"); llist.printList(); } }
OUTPUT
Linked List Before Sorting 2 1 2 1 1 2 0 1 0 Linked List After Sorting 0 0 1 1 1 1 2 2 2
- Get link
- X
- Other Apps
Comments
Post a Comment