如何用两个栈实现一个队列?
思路:
入栈:元素进入stack1;
出栈:
若stack2为空,stack1 不为空,将stack1所有元素出栈进入stack2,stack2从栈顶出栈;
若stack2不为空,则stack2栈顶出栈。
java代码实现示例:
package test;
import java.util.Stack;
/**
* Title:StackToQueue
* Description:两个栈实现一个队列
* @author LeslieTian
* @date 2018-10-30 下午8:18:43
* @version 1.0
*/
public class StackToQueue {
Stack stack1 = new Stack();
Stack stack2 = new Stack();
public static void main(String[] args) {
StackToQueue s = new StackToQueue();
s.add(3);
s.add(4);
s.add(5);
System.out.println(s.delect());
System.out.println(s.delect());
System.out.println(s.delect());
System.out.println(s.delect());
}
/**
* 队列入队
* @param x
*/
public void add(int x){
stack1.push(x);
}
/**
* 队列出队
*/
public int delect(){
if((stack2.size()+stack1.size())!=0){//队列不为空
if(stack2.isEmpty()){//stack2为空,stack1不为空
//stack to stack2
stack1Tostack2();
return stack2.pop();
}else{//stack2不为空
return stack2.pop();
}
}
else {//队列为空
System.out.println("队列为空!");
return -1;
}
}
public void stack1Tostack2(){//stack1 元素倒入stack2中
while(!stack1.isEmpty()){
stack2.push(stack1.pop());
}
}
}
输出:3 4 5 队列为空! -1
No comments:
Post a Comment