// class to combine ListNodes into a full linked list public class LinkedIntList { private ListNode front; public LinkedIntList() { front = null; } // pre: num >= 0 // create a list with integers from num to 0 in decending order // e.g. 5 -> 5 - 4 - 3 - 2 - 1 - 0 public LinkedIntList(int num) { // front = new ListNode(num); // // ListNode curr = front; // for (int i = num - 1; i >= 0; i--) { // ListNode temp = new ListNode(i); // curr.next = temp; // curr = curr.next; // } for (int i = 0; i <= num; i++) { ListNode temp = new ListNode(i, front); front = temp; } } public void add(int value) { if (front == null) { // 1) change front front = new ListNode(value); } else { // find the last node ListNode curr = front; while (curr.next != null) { curr = curr.next; } // attach a new node to the last node // 2) change the .next field of a node in the list ListNode temp = new ListNode(value); curr.next = temp; } } // pre: list is currently sorted in non-decreasing order public void addSorted(int value) { // cases: // empty and front if (front == null || value < front.data) { ListNode temp = new ListNode(value, front); front = temp; } else { // middle and end ListNode curr = front; while (curr.next != null && curr.next.data < value) { curr = curr.next; } ListNode temp = new ListNode(value, curr.next); curr.next = temp; } } }