package com.coding.basic; import com.sun.org.apache.bcel.internal.generic.NEW; import java.awt.*; public class LinkedList implements List { public LinkedList() { head = null; this.Size = 0; } private Node head; private int Size; public void add(Object o){ Node NewNode = new Node(o); if (this.head == null) { head = NewNode; } else { Node node; for (node = head; node.next != null; node = node.next) { } node.next = NewNode; } this.Size++; } //index为位置1,2,3,4,5,6,7 public void add(int index , Object o){ Node NewNode = new Node(o); if (1 == index) { NewNode.next = head; head = NewNode; } else { Node node; int i = 0; for (i = 1, node = head; i < index - 1; i++, node = node.next) { } NewNode.next = node.next; node.next = NewNode; } this.Size++; } public Object get(int index){ Node node; int i = 0; for (i = 1, node = head; i < index ; i++, node = node.next) { } return node.data; // return null; } public Object remove(int index){ Node node; int i = 0; if (1 == index) { if (head.next == null) { Object DelData = head.data; head = null; this.Size--; return DelData; } else { Node DelNode = head; head = DelNode.next; DelNode.next = null; this.Size--; return DelNode.data; } } else { for (i = 1, node = head; i < index - 1; i++, node = node.next) { } Node DelNode = node.next; node.next = DelNode.next; DelNode.next = null; this.Size--; return DelNode.data; } } public int size(){ return this.Size; } public void addFirst(Object o){ Node NewNode = new Node(o); if (null == this.head) { NewNode.next = null; head = NewNode; } else { NewNode.next = head; head = NewNode; } this.Size++; } public void addLast(Object o){ Node NewNode = new Node(o); if (this.Size == 0) { NewNode.next = null; head = NewNode; } else { // int i = 0; Node node; for (node = head; node.next != null; node = node.next) { } node.next = NewNode; } this.Size++; } public Object removeFirst(){ Node DelFirst; if (1 == this.Size) { DelFirst = this.head; DelFirst.next = null; head = null; } else { DelFirst = this.head; head = head.next; DelFirst.next = null; } this.Size--; return DelFirst.data; } public Object removeLast(){ Node DelLast; if (1 == this.Size) { DelLast = head; DelLast.next = null; head = null; } else { Node node; for (node = head; node.next.next != null; node = node.next) { } DelLast = node.next; node.next = null; } this.Size--; return DelLast.data; } public Iterator iterator(){ return null; } private static class Node{ Object data; Node next; public Node(Object o) { this.data = o; this.next = null; } } }