算法

3.用2个栈实现队列

2018-04-09  本文已影响0人  关guan关guan

题目描述:用两个栈实现一个队列,实现对了的两个函数 appendTail 和 deleteHead,分别完成在队列尾插入结点和在队列头部删除结点的功能。
目的:体会下不同条件需要不同处理的妙处
代码:
package com.guanstudy;

import java.util.Stack;

/**

**/
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());
}

}

上一篇下一篇

猜你喜欢

热点阅读