LinkedList实现栈和队列操作

LinkedList 不仅实现了List接口还实现了Dueue接口(双端队列,既具有队列的特征,也具有栈的特征),Dueue接口是Queue的子接口。它也可以被当作堆栈、队列或双端队列进行操作。
LinkedList 实现 List 接口,能对它进行队列操作。
LinkedList 实现 Deque 接口,能将LinkedList当作双端队列使用。

使用LinkedList实现堆栈

import java.util.LinkedList;

/**
 * LinkedList模拟栈,先进后出
 * 
 */
public class Stack {

    private LinkedList linkedList = new LinkedList();

    /**
     * 进栈
     * 
     * @param t
     *            进栈的元素
     */
    public void push(T t) {
        linkedList.addFirst(t);
    }

    /**
     * 出栈
     * 
     * @return 出栈的元素
     */
    public T pop() {
        return linkedList.removeFirst();
    }

    /**
     * 销毁栈
     */
    public void destroyStack() {
        linkedList.clear();
    }

    /**
     * 查看栈顶元素
     * 
     * @return 栈顶的元素
     */
    public T stackFirst() {
        return linkedList.getFirst();
    }

    /**
     * 查看栈底元素
     * 
     * @return 栈底的元素
     */
    public T stackLast() {
        return linkedList.getLast();
    }

    /**
     * 查看栈长度
     * 
     * @return 栈的长度
     */
    public int stackLength() {
        return linkedList.size();
    }

    /**
     * 判断栈是否为空
     * 
     * @return 栈为空 true 栈不为空 false
     */
    public boolean isEmpty() {
        return linkedList.isEmpty();
    }

    /**
     * 打印栈
     */
    public String toString() {
        return linkedList.toString();
    }

}

 

使用LinkedList实现队列

import java.util.LinkedList;

/**
 * LinkedList模拟队列,先进先出
 */
public class Queue {

    private LinkedList linkedList = new LinkedList();

    /**
     * 进队
     * 
     * @param t
     *            进队的元素
     */
    public void enQueue(T t) {
        linkedList.addLast(t);
    }

    /**
     * 出队
     * 
     * @return 出队的元素
     */
    public T deQueue() {
        return linkedList.removeFirst();
    }

    /**
     * 销毁队列
     */
    public void destroyQueue() {
        linkedList.clear();
    }

    /**
     * 查看队首元素
     * 
     * @return 队首的元素
     */
    public T queueFirst() {
        return linkedList.getFirst();
    }

    /**
     * 查看队尾元素
     * 
     * @return 队尾的元素
     */
    public T queueLast() {
        return linkedList.getLast();
    }

    /**
     * 查看队列长度
     * 
     * @return 队列的长度
     */
    public int queueLength() {
        return linkedList.size();
    }

    /**
     * 判断队列是否为空
     * 
     * @return 队列为空 true 队列不为空 false
     */
    public boolean isEmpty() {
        return linkedList.isEmpty();
    }

    /**
     * 打印队列
     */
    public String toString() {
        return linkedList.toString();
    }

}

参考:

https://www.cnblogs.com/ybxxszl/p/9328850.html

https://blog.csdn.net/sujin_/article/details/81588413

https://www.cnblogs.com/linjiqin/p/3305906.html

你可能感兴趣的:(集合)