package java1; public class LinkedList implements List { private Node head=null; private Node last=null; private int size=0; public void add(Object o){ Node newNode = new Node(o,null); if(head==null){ head = newNode; last = newNode; }else{ addLast(o); } size++; } public void add(int index , Object o){ if(index<0&&index>size+1){ System.out.println("Wrong Input!"); } Node newNode = new Node(o,null); if(index==0){ addFirst(o); }else if(index==size){ addLast(o); }else{ Node a=head; for(int i=0;i<index;i++){ a=a.next; if(i==size-1){ newNode.next=a.next; a.next=newNode; } } } size++; } public Object get(int index){ if(head==null){ return head; } Node a=head; for(int i=0;i<index;i++){ a=a.next; if(i==index){ break; } } return a; } public Object remove(int index){ if(head==null){ return head; } Node a=head; for(int i=0;i<index;i++){ a=a.next; if(i==index-1){ a.next=a.next.next; a.next.next=null; } } return a; } public int size(){ return this.size; } public void addFirst(Object o){ Node newNode = new Node(o,null); if(head==null){ head=newNode; last=newNode; }else{ newNode.next=head; head=newNode; } size++; } public void addLast(Object o){ Node newNode = new Node(o,null); if(head==null){ head=newNode; }else{ last.next=newNode; } last=newNode; size++; } public Object removeFirst(){ if(head==null){ System.out.println("List Is Empty!"); }else{ head=head.next; } size--; return head; } public Object removeLast(){ if(head==null){ System.out.println("List Is Empty!"); }else{ Node a=head; for(int i=0;i<size;i++){ a=a.next; if(i==size-1){ last=a; a.next=null; } } } size--; return head; } private static class Node{ Object data; Node next; public Node(Object e,Node node){ this.data = e; this.next = node; } } }