package com.coding.basic; public class LinkedList implements List { private Node head; private int size; public void add(Object o) { Node n = new Node(); n.data = o; if (head != null) { n.next = head; size++; } else { size = 1; } head = n; } public void add(int index, Object o) { Node n1 = head; Node n2 = new Node(); for (int i = size - 1; i >= index; i--) { if (i == index) { n2.next = n1.next; n2.data = 0; n1.next = n2; } else { n1 = n1.next; } } size++; } public Object get(int index) { Node n1 = head; Object o = null; for (int i = size - 1; i >= index; i--) { n1 = n1.next; if (i == index) { o = n1.data; } } return o; } public Object remove(int index) { Node n1 = head; Node n2 = new Node(); Node n3 = new Node(); Object o = null; for (int i = size - 1; i >= index; i--) { if (i == index + 1) { n2 = n1.next; } else if (i == index) { n3 = n2.next; o = n3.data; n1 = n3.next; } else { n1 = n1.next; } } n2.next = n1; size--; return o; } public int size() { return size; } public void addFirst(Object o) { Node n=new Node(); Node n1=head; for(int i=size-1;i>=0;i--) { n1=n1.next; if(i==0){ n=n1.next; n.data=o; } } } public void addLast(Object o) { Node n=new Node(); n.data=o; n.next=head; head=n; } public Object removeFirst() { Object o= new Object(); Node n1=head; for(int i=size-1;i>=0;i--) { n1=n1.next; if(i==1){ o=n1.next.data; n1.next=null; } } return o; } public Object removeLast() { Object o= new Object(); Node n=head; head=n.next; o=n.data; n.next=null; return o; } public Iterator iterator() { return null; } private static class Node { Object data; Node next; } }