3.用2个栈实现队列
2018-04-09 本文已影响0人
关guan关guan
题目描述:用两个栈实现一个队列,实现对了的两个函数 appendTail 和 deleteHead,分别完成在队列尾插入结点和在队列头部删除结点的功能。
目的:体会下不同条件需要不同处理的妙处
代码:
package com.guanstudy;
import java.util.Stack;
/**
- @date 2018年4月9日
- @author junpu.guan
- @param <T>
- @Description: TODO
**/
public class Test<T> {
private Stack<T> stack1 = new Stack<T>();
private Stack<T> stack2 = new Stack<T>();
public void appendTail(T t) {
stack1.push(t);
}
public T deleteHead() throws Exception {
if (stack2.isEmpty()) {
while (!stack1.isEmpty()) {
stack2.push(stack1.pop());
}
}
if (stack2.isEmpty()) {
throw new Exception("队列为空,不能删除");
}
return stack2.pop();
}
public static void main(String args[]) throws Exception {
Test<String> t7 = new Test<>();
t7.appendTail("1");
t7.appendTail("2");
t7.appendTail("3");
System.out.println(t7.deleteHead());
t7.appendTail("4");
System.out.println(t7.deleteHead());
System.out.println(t7.deleteHead());
}
}