刚看到题感觉以前见过,脑海里便在压力下飘过了无数的想法,最后灵光一闪想到可以用两个栈结构来模拟队列。于是匆匆码代码,没想到要封装为泛型类,可能因为时间紧,自己菜吧,最后被面试官教育了,菜就要好好学习,不能飘。不说了,贴下我事后写出的代码,不高级。
package com.huyong;
import java.util.Stack;
public class exam {
public static void main(String[] args) {
Integer[] num = new Integer[]{1,2,3,4};
StackImQueue<Integer> siq = new StackImQueue<Integer>();
System.out.println("-------------用栈模拟队列-------------");
for(Integer n:num){
System.out.println("依次入队的数据:"+n);
siq.push(n);
}
for(Integer n:num){
System.out.println("依次出队的数据:"+siq.pop());
}
siq.clear();
}
}
class StackImQueue<T>{
private T t;
private Stack<T> s1 = new Stack<>();
private Stack<T> s2 = new Stack<>();
public void push(T t){
s1.push(t);
}
public T pop(){
while(!s1.isEmpty()){
s2.push(s1.pop());
}
return s2.pop();
}
public void clear(){
s1.clear();
s2.clear();
}
}
这样就用栈实现了队列的功能,运用了java封装的思想。
想想当时有点傻,不说了,人菜去学习了。