LinkedList实现栈和队列操作

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

使用LinkedList实现堆栈

import java.util.LinkedList;

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

    private LinkedList<T> linkedList = new LinkedList<T>();

    /**
     * 进栈
     * 
     * @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<T> {

    private LinkedList<T> linkedList = new LinkedList<T>();

    /**
     * 进队
     * 
     * @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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值