LinkedList

匿名 (未验证) 提交于 2019-12-02 23:57:01
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();     }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!