「java栈队列使用」java 队列 栈

博主:adminadmin 2022-11-28 19:13:07 67

本篇文章给大家谈谈java栈队列使用,以及java 队列 栈对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java:如何用两个队列实现栈

package leetcode.test;

import java.util.ArrayDeque;

import java.util.Queue;

/**

 * 队列实现的栈

 *

 * @author Administrator

 */

public class QueueStackT {

    QueueT nowQue = new ArrayDeque();

    QueueT otherQue = new ArrayDeque();

    public T pop() {

        T last = null;

        while (!nowQue.isEmpty()) {

            last = nowQue.peek();

            nowQue.poll();

            if (!nowQue.isEmpty()) {

                otherQue.offer(last);

            }

        }

        switchQueue();

        return last;

    }

    private void switchQueue() {

        QueueT tmp = nowQue;

        nowQue = otherQue;

        otherQue = tmp;

    }

    public boolean push(T obj) {

        return nowQue.offer(obj);

    }

    public boolean isEmpty() {

        return nowQue.isEmpty();

    }

    @Override

    public String toString() {

        final StringBuilder sb = new StringBuilder("{\"QueueStack\":{");

        sb.append("\"nowQue\":")

                .append(nowQue);

        sb.append(",\"otherQue\":")

                .append(otherQue);

        sb.append("}}");

        return sb.toString();

    }

    public static void main(String[] args) {

        QueueStackString queueStack = new QueueStack();

        queueStack.push("1");

        queueStack.push("2");

        queueStack.push("3");

        queueStack.push("4");

        while (!queueStack.isEmpty()) {

            System.out.println(queueStack.pop());

        }

    }

}

java 队列 堆栈 怎么用

程序=数据结构+算法

队列和堆栈就是一种数据结构了,其他的还有链表、树等,是一种存储数据的形式。

堆栈就是实现先进后出的数据结构,比如一端开口一端有底瓶子里,你把饼干(数据)从左端放入瓶子中,拿饼干也要从左端拿,而先放入的饼干最后才能取出。

队列就是实现先进先出的数据结构,比如一个两端都开口的瓶子,你把饼干从左端放入瓶子,拿饼干可以从右端拿出,先放入的饼干最先取出

java中queue的使用方法?

java中的queue类是队列数据结构管理类。在它里边的元素可以按照添加它们的相同顺序被移除。

队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头都是调用remove()或poll()所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个Queue实现必须指定其顺序属性。

offer 添加一个元素并返回true 如果队列已满,则返回false

poll 移除并返问队列头部的元素 如果队列为空,则返回null

peek 返回队列头部的元素 如果队列为空,则返回null

put 添加一个元素 如果队列满,则阻塞

take 移除并返回队列头部的元素 如果队列为空,则阻塞

element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常

add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常

remove 移除并返回队列头部的元素 如果队列为空,则抛出一个

NoSuchElementException异常

注意:poll和peek方法出错进返回null。因此,向队列中插入null值是不合法的。

还有带超时的offer和poll方法重载,例如,下面的调用:

boolean success = q.offer(x,100,TimeUnit.MILLISECONDS);

尝试在100毫秒内向队列尾部插入一个元素。如果成功,立即返回true;否则,当到达超时进,返回false。同样地,调用:

Object head = q.poll(100, TimeUnit.MILLISECONDS);

如果在100毫秒内成功地移除了队列头元素,则立即返回头元素;否则在到达超时时,返回null。

阻塞操作有put和take。put方法在队列满时阻塞,take方法在队列空时阻塞。

Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接 口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。

JAVA中队列和栈的区别

队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;

栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。

区别如下:

一、规则不同

1. 队列:先进先出(First In First Out)FIFO

2. 栈:先进后出(First In Last Out )FILO

二、对插入和删除操作的限定不同

1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;

2. 栈:只能在表的一端插入和删除。

三、遍历数据速度不同

1.

队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快;

2.

栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。

关于java栈队列使用和java 队列 栈的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。