栈与队列的实现(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) {
//使用栈
Stack
while(number>0){
//压栈
stack.push(number % base_num)
number /= base_num
}
int n = stack.size()
int val=0
//依次出栈并合成结果(用我们熟悉的十进制表示,所以乘以10)
for(int i=0i
}
return val
}
}
Java:如何用两个队列实现栈
11111111120
22222222230
33333333340
44444444450
55555555560
6666 packageleetcode.test
 
importjava.util.ArrayDeque
importjava.util.Queue
 
/**
 * 队列实现的栈
 *
 * @author Administrator
 */
publicclassQueueStack
    Queue
    Queue
 
 
    publicT pop() {
        T last = null
        while(!nowQue.isEmpty()) {
            last = nowQue.peek()
            nowQue.poll()
            if(!nowQue.isEmpty()) {
                otherQue.offer(last)
            }
        }
        switchQueue()
        returnlast
    }
 
    privatevoidswitchQueue() {
        Queue
        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.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),就好象一筒羽毛球,只有把上面拿出来,下面的才能拿出来
队列是先进先出的,进和出分别在不同的端进行,比如排队的人,排在前面的人先到柜台办理业务,后面来的人后得到服务,所以称为"队列"是很形象的