public class LinkedList<E> extends AbstractList<E> { private Node<E> head; private int size; class Node<E> { private Node<E> next; private E e; Node(Node node, E e) { next = node; this.e = e; } Node(E e) { this.e = e; } } public int size() { return size; } /** * 添加元素 * @param e * @return */ @Override public boolean add(E e) { //初始化要加入的节点 Node node = new Node<E>(e); if (head == null) { head = node; return false; } Node temp = head; while (temp.next != null) { temp = temp.next; } temp.next = node; size++; return true; } /** * 添加指定位置元素 * @param index 索引 * @param e 元素 */ public void add(int index, E e) { check(index); Node node = new Node<E>(e); Node<E> temp = head; int counter = 0; while (temp.next != null) { counter++; if (counter == index) { node.next = temp.next; temp.next = node; return; } temp = temp.next; } size++; } /** * 位置检查 * @param index */ public void check(int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("位置不合法"); } } /** * 获取指定位置元素 * @param index * @return */ public E get(int index) { Node node = head; for (int i = 0; i <= index; i++) { node = node.next; if (i == index) { return (E) node.e; } } return null; } /** * 删除指定位置元素 * @param index * @return */ @Override public E remove(int index) { check(index); Node<E> temp = head; int counter = 0; Node node; while (temp.next != null) { counter++; if (counter == index) { node = temp.next; temp.next = temp.next.next; return (E) node.e; } temp = temp.next; } size--; return null; } /** * 清空元素 */ @Override public void clear() { size = 0; head = null; } public void list() { Node tmp = head; while (tmp != null) { System.out.print(tmp.e+" "); tmp = tmp.next; } } public static void main(String[] args) { LinkedList ll = new LinkedList(); ll.add(1); ll.add(2); ll.add(3); ll.add(4); ll.add(5); ll.add(2, 88); ll.list(); System.out.println("位置: " + ll.get(3)); System.out.println("被删除的元素: " + ll.remove(2)); ll.list(); ll.clear(); ll.list(); }
来源:博客园
作者:quesite
链接:https://www.cnblogs.com/lIllIll/p/11444452.html