/* * LinkedList code provided for P6 * Same as code shown in class, except * that Account instances are the items to be stored. * July 29, 2015 */ public class LinkedList { private Node head; private int size; public LinkedList() { head = null; size = 0; } public void clear() { head = null; } public void add(Account item) { add(size, item); } public void add(int index, Account item) { if (index < 0 || index > size) throw new IndexOutOfBoundsException( "List index out of bounds on add"); if (index == 0) { head = new Node(item, head); } else { // find predecessor Node curr = head; for (int i = 0; i < index - 1; i++) { curr = curr.getNext(); } // append after predecessor curr.setNext(new Node(item, curr.getNext())); } size++; } public boolean addBefore(Account item1, Account item2) { Node curr = head; while (curr.getNext()!=null){ if (curr.getNext().getItem().equals(item2)){ System.out.println("adding"); curr.setNext(new Node(item1, curr.getNext())); size++; return true; } curr=curr.getNext(); } return false; } public void remove(int index) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException( "List index out of bounds on remove"); if (index == 0) { head = head.getNext(); } else { // locate predecessor of node to be removed Node curr = head; for (int i = 0; i < index - 1; i++) curr = curr.getNext(); curr.setNext(curr.getNext().getNext()); } size--; } public boolean remove(Account item) { if (size == 0) return false; if (item.equals(head.getItem())) { head = head.getNext(); size--; return true; } else { // locate predecessor of node to be removed Node curr = head; while (curr.getNext() != null && !item.equals(curr.getNext().getItem())) { curr = curr.getNext(); } // if node is not in the list if (curr.getNext() == null) return false; else { curr.setNext(curr.getNext().getNext()); size--; return true; } } } public int size() { return size; } public boolean isEmpty() { return size == 0; } public String toString() { String res = "[" + size + ": "; for (Node current = head; current != null; current = current.getNext()) res += current.getItem().toString() + " "; return res + "]"; } public Account get(int index) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("List index out of bounds on get"); Node ret = head; for(int i = 0; i < index; ++i) ret = ret.getNext(); return ret.getItem(); } }