public class LinkedList implements List { private Node head; private int size = 0; public void add(Object o){ if (head == null) { head = new Node(o); } else { Node pointer = head.next; while (pointer.next != null) { pointer = pointer.next; } pointer.next = new Node(o); } size++; } public void add(int index , Object o){ Node pointer = head; for (int i = 0; i < index - 1; i++) { pointer = pointer.next; } Node nNode = new Node(o, pointer.next); pointer.next = nNode; size++; } public Object get(int index){ Node pointer = head; for (int i= 0; i < index; i++) { pointer = pointer.next; } return pointer; } public Object remove(int index){ Node pointer = head; for (int i = 0; i < index - 1; i++) { pointer = pointer.next; } Node temp = pointer.next; pointer.next = temp.next; size--; return temp; } public int size(){ return size; } public void addFirst(Object o){ head = new Node(o, head); } public void addLast(Object o){ Node pointer = head; while (pointer.next != null) { pointer = pointer.next; } pointer.next = new Node(o); } public Object removeFirst(){ Node temp = head; head = head.next; return temp; } public Object removeLast(){ Node pointer = head; while (pointer.next.next != null) { pointer = pointer.next; } Node temp = pointer.next; pointer.next = null; return temp; } public myIterator iterator(){ return new myIterator(this); } private static class Node{ Object data; Node next; Node (Object o, Node n) { data = o; next = n; } Node (Object o) { data = o; next = null; } } }