package basic; public class LinkedList implements List { private Node head; private int size; //加到最后 public void add(Object o){ Node newNode= new Node(); newNode.data = o; newNode.next = null; if (head == null ){ head= newNode; size++; return; } Node currentNode = head; while (currentNode.next != null ){ currentNode = currentNode.next ; } /* for (int i=0;i< size;i++){ currentNode = currentNode.next ; } */ currentNode.next =newNode; size++; } public void add(int index , Object o){ if (index >= size ||index < 0) { return; } Node newNode= new Node(); newNode.data = o; Node PrevNode =null; if (index ==0 ){ Node tempNode = head ; head = newNode; newNode.next = tempNode; } else { Node currentNode = head; for (int i=0; i <index; i++){ PrevNode = currentNode; currentNode =currentNode.next; } PrevNode.next = newNode; newNode.next = currentNode; } size++; } public Object get(int index){ if (index >= size ||index < 0) { return null; } Node currentNode = head; for (int i=0; i <index; i++){ currentNode =currentNode.next; } return currentNode.data; } public Object remove(int index){ if (index >= size ||index < 0) { return null; } Node currentNode = head; if (index ==0 ){ head =head.next; size--; return currentNode.data; } Node PrevNode = null; for (int i=0; i <index; i++){ PrevNode= currentNode; currentNode =currentNode.next; } PrevNode.next = currentNode.next; size--; return currentNode.data; } public int size(){ return size; } public void addFirst(Object o){ Node newNode = new Node(); newNode.data =o; newNode.next = head; head = newNode; size++; } public void addLast(Object o){ if (head == null){ head = new Node(); head.data= o; size ++; return; } Node currentNode = head; while (currentNode.next != null){ currentNode=currentNode.next; } Node newNode = new Node(); newNode.data= o; newNode.next =null; currentNode.next = newNode; size++; } public Object removeFirst(){ size--; if (head ==null){ return null; } else { Node firstNode = head; head = firstNode.next; return firstNode.data ; } } public Object removeLast(){ if (head ==null ){ return null; } if (size ==1){ Node tempnode = head; head = null; size--; return tempnode.data; } Node currentNode = head.next; Node PrevNode= head; while (currentNode.next != null){ PrevNode = currentNode; currentNode=currentNode.next; } PrevNode.next= null; size--; return currentNode.data ; } public Iterator iterator(){ return null; } private static class Node{ Object data; Node next; } }