使用队列实现栈
使用队列实现一个栈的主要思想就是采用两个队列,一个为存放数据,一个为辅助,为什么会是这个样子的呢?因为栈是先进后出,而队列是先进先出
假设现在有两个队列:data和help
入栈时:
将数据压入data队列
出栈时:
将data的数据除最后一个外,全部压人help中,这么做只是为了把最后一个数据拿出来
根据队列的性质此时的help中的数据只是比原来的data少最后一个数据其他的都没有变化
此时data队列只剩一个数据,也就是最后压入的数据,将该数据出队,最后将help与data进行交换,
package train;
import java.util.LinkedList;
import java.util.Queue;
public class 队列实现栈 {
public class Node {
public Queue<Integer> q1;
public Queue<Integer> help;
public int value ;
public Node (int data) {
this.q1 = new LinkedList();
this.help = new LinkedList();
this.value = data;
}
//压人
public void push (int data) {
q1.add(data);
}
//出栈
public int pop(){
if (q1.isEmpty()){
return -1;
}
while (q1.size()>1) {
help.add(q1.poll());
}
int data = q1.poll();
return data;
}
//获得栈顶元素
public int peek(){
if (q1.isEmpty()){
return -1;
}
while (q1.size()>1) {
help.add(q1.poll());
}
int data = q1.poll();
help.add(data);
swap(help,q1);
return data;
}
//交货help和q
public void swap(Queue help,Queue q1){
Queue temp = help;
help =q1;
q1 =temp;
}
}
}
版权声明:本文为li15006474642原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。