package my.collection.linear; public class MyLinkedList implements MyList { private Node head; private int size = 0; public void add(Object obj) { add(this.size, obj); } public void add(int index, Object obj) { Node curNode = head; Node addNode = new Node(obj); if(index == 0){ addNode.next = head; head = addNode; }else{ for(int i=0; i<index-1; i++){ curNode = curNode.next; } addNode.next = curNode.next; curNode.next = addNode; } size++; } public Object remove(int index) { Node curNode = head; Node remNode = new Node(); if(index == 0){ remNode = head; head = head.next; }else{ for(int i=0; i<index-1; i++){ curNode = curNode.next; } curNode.next = curNode.next.next; } size--; return remNode; } public int size() { return this.size; } public Object get(int index) { Node curNode = head; for(int i=0; i<index; i++){ curNode = curNode.next; } return curNode.data; } public void addFirst(Object obj){ add(0,obj); } public void addLast(Object obj){ add(size,obj); } public Object removeFirst(){ return remove(0); } public Object removeLast(){ return remove(size-1); } public String toString(){ Node curNode = head; String str = "\n" + "toString():"; while(curNode != null){ str += curNode.data + "\t"; curNode = curNode.next; } return str; } private static class Node{ Object data; Node next; private Node(){ } private Node(Object obj){ this.data = obj; this.next = null; } } }