资讯专栏INFORMATION COLUMN

【面试算法】由两个栈组成的队列

wenshi11019 / 3222人阅读

摘要:题目编写一个类,用两个栈实现队列,支持队列的基本操作,,代码实现

【题目】编写一个类,用两个栈实现队列,支持队列的基本操作(add,poll,peek)

代码实现

public class TwoStacksQueue {

    private Stack stackPush;
    private Stack stackPop;

    public TwoStacksQueue(){
        stackPush = new Stack();
        stackPop = new Stack();
    }

    public void add(int newNum){
        stackPush.push(newNum);
    }

    public int poll(){
        if (stackPop.isEmpty() && stackPush.isEmpty()) {
            System.out.println("queue is empty");
            return -1;
        }else if(stackPop.isEmpty()){
            while(!stackPush.isEmpty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.pop();
    }

    public int peek(){
        if (stackPop.isEmpty() && stackPush.isEmpty()) {
            System.out.println("queue is empty");
            return -1;
        }else if(stackPop.isEmpty()){
            while(!stackPush.isEmpty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.peek();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        TwoStacksQueue queue = new TwoStacksQueue();
        int[] testNum = {4,2,4,6,5,0,1,10};
        for(int i:testNum){
            queue.add(i);
        }
        for(int i = 0; i < testNum.length; i++){
            System.out.println(queue.peek()+" "+queue.poll());
        }
    }

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65578.html

相关文章

  • [面试专题]数据结构和算法-JS之魂

    摘要:数据结构和算法之魂标签空格分隔未分类数据结构栈一种遵从先进后出原则的有序集合新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。 数据结构和算法-JS之魂 标签(空格分隔): 未分类 数据结构: 栈:一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 class St...

    张利勇 评论0 收藏0
  • [面试专题]数据结构和算法-JS之魂

    摘要:数据结构和算法之魂标签空格分隔未分类数据结构栈一种遵从先进后出原则的有序集合新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。 数据结构和算法-JS之魂 标签(空格分隔): 未分类 数据结构: 栈:一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 class St...

    aervon 评论0 收藏0
  • [面试专题]数据结构和算法-JS之魂

    摘要:数据结构和算法之魂标签空格分隔未分类数据结构栈一种遵从先进后出原则的有序集合新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。 数据结构和算法-JS之魂 标签(空格分隔): 未分类 数据结构: 栈:一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 class St...

    lifesimple 评论0 收藏0
  • [面试专题]数据结构和算法-JS之魂

    摘要:数据结构和算法之魂标签空格分隔未分类数据结构栈一种遵从先进后出原则的有序集合新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。 数据结构和算法-JS之魂 标签(空格分隔): 未分类 数据结构: 栈:一种遵从先进后出 (LIFO) 原则的有序集合;新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端为栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。 class St...

    dayday_up 评论0 收藏0
  • 想进大厂?50个多线程面试题,你会多少?(一)

    摘要:下面是线程相关的热门面试题,你可以用它来好好准备面试。线程安全问题都是由全局变量及静态变量引起的。持有自旋锁的线程在之前应该释放自旋锁以便其它线程可以获得自旋锁。 最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员...

    wow_worktile 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<