LinkedList实现队列和栈

来源:互联网 发布:linux设置自启命令 编辑:程序博客网 时间:2024/05/16 07:34

查看LinkedList源码:

   

1、实现栈

后进先出,插入和弹出操作都在前端,对应代码:

public void push(E e) {        addFirst(e);    }    /**     * Pops an element from the stack represented by this list.  In other     * words, removes and returns the first element of this list.     *     * <p>This method is equivalent to {@link #removeFirst()}.     *     * @return the element at the front of this list (which is the top     *         of the stack represented by this list)     * @throws NoSuchElementException if this list is empty     * @since 1.6     */    public E pop() {        return removeFirst();    }


 

2、实现队列

先进先出,插入在前端,弹出在后端,通过一个双向指针,末尾操作,即是header.previour操作

   

 public E poll() {        if (size==0)            return null;        return removeFirst();    }  public boolean offer(E e) {        return add(e);    }  public boolean add(E e) { addBefore(e, header);        return true;    }      private Entry<E> addBefore(E e, Entry<E> entry) { Entry<E> newEntry = new Entry<E>(e, entry, entry.previous); newEntry.previous.next = newEntry; newEntry.next.previous = newEntry; size++; modCount++; return newEntry;    }