当前位置:首页>开发>正文

栈与队列的实现(java) Java:如何用两个队列实现栈

2023-04-15 18:27:41 互联网 未知 开发

 栈与队列的实现(java) Java:如何用两个队列实现栈

栈与队列的实现(java)

import java.util.Stack

public class Translate {
//程序入口
public static void main(String[]args){
int n = Translate.translate(3467,8)
System.out.println("结果是:" n)
}

public static int translate(int number, int base_num) {
//使用栈
Stackstack = new Stack()
while(number>0){
//压栈
stack.push(number % base_num)
number /= base_num
}
int n = stack.size()
int val=0
//依次出栈并合成结果(用我们熟悉的十进制表示,所以乘以10)
for(int i=0i val=val*10 stack.pop()
}
return val
}
}

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

11111111120
22222222230
33333333340
44444444450
55555555560
6666 packageleetcode.test
 
importjava.util.ArrayDeque
importjava.util.Queue
 
/**
 * 队列实现的栈
 *
 * @author Administrator
 */
publicclassQueueStack {
    Queue nowQue = newArrayDeque<>()
    Queue otherQue = newArrayDeque<>()
 
 
    publicT pop() {
        T last = null
        while(!nowQue.isEmpty()) {
            last = nowQue.peek()
            nowQue.poll()
            if(!nowQue.isEmpty()) {
                otherQue.offer(last)
            }
        }
        switchQueue()
        returnlast
    }
 
    privatevoidswitchQueue() {
        Queue tmp = nowQue
        nowQue = otherQue
        otherQue = tmp
    }
 
    publicbooleanpush(T obj) {
        returnnowQue.offer(obj)
    }
 
    publicbooleanisEmpty() {
        returnnowQue.isEmpty()
    }
 
    @Override
    publicString toString() {
        finalStringBuilder sb = newStringBuilder("{"QueueStack":{")
        sb.append(""nowQue":")
                .append(nowQue)
        sb.append(","otherQue":")
                .append(otherQue)
        sb.append("}}")
        returnsb.toString()
    }
 
    publicstaticvoidmain(String[] args) {
        QueueStack queueStack = newQueueStack()
        queueStack.push("1")
        queueStack.push("2")
        queueStack.push("3")
        queueStack.push("4")
        while(!queueStack.isEmpty()) {
            System.out.println(queueStack.pop())
        }
    }
}


java 队列 堆栈 怎么用

程序=数据结构 算法
队列和堆栈就是一种数据结构了,其他的还有链表、树等,是一种存储数据的形式。
堆栈就是实现先进后出的数据结构,比如一端开口一端有底瓶子里,你把饼干(数据)从左端放入瓶子中,拿饼干也要从左端拿,而先放入的饼干最后才能取出。
队列就是实现先进先出的数据结构,比如一个两端都开口的瓶子,你把饼干从左端放入瓶子,拿饼干可以从右端拿出,先放入的饼干最先取出

栈和队列区别

同样是线性结构的,栈是一种只允许在表的一端进行插入和删除操作的线性表。就好像食堂里的一摞盘子,只能一个一个往上放,也只能从那一头一个一个往下取。而队列是一边进一边出的,就好像我们在食堂里排队一样,队头出列,队尾入列。

1,栈和队列的区别是啥

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

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

区别如下:

一、规则不同

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

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

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

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

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

三、遍历数据速度不同

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

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

栈和队列在功能上的区别

栈和队列都属于一位链表
区别是:
栈是后进先出,进和出都是在同一端进行,称为"压栈"(push)和"弹栈"(pop),就好象一筒羽毛球,只有把上面拿出来,下面的才能拿出来
队列是先进先出的,进和出分别在不同的端进行,比如排队的人,排在前面的人先到柜台办理业务,后面来的人后得到服务,所以称为"队列"是很形象的