zoukankan      html  css  js  c++  java
  • 【08】双栈实现队列

    题目

    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

    思路

    一个入栈,一个出栈

    收获

    java的Stack pop方法会返回出栈的值。

    代码

    class CQueue {
        Stack<Integer> appendTailStack;
        Stack<Integer> deleteHeadStack;
        public CQueue() {
    
            //负责队末插入的栈
            appendTailStack =new Stack<>();
            //出队的栈
            deleteHeadStack = new Stack<>();
            //平时存放在出队栈中,顺序如同队列
        }
    
        public void appendTail(int value) {
            if (deleteHeadStack.empty()) appendTailStack.push(value);
            else
                { //先把队push进appendTail栈
                while(!deleteHeadStack.empty()){
                    appendTailStack.push(deleteHeadStack.pop());
                }
                //插入
                appendTailStack.push(value);}
            //倒回去
            while(!appendTailStack.empty()){
                deleteHeadStack.push(appendTailStack.pop());
            }
        }
    
        public int deleteHead() {
            if(deleteHeadStack.empty()) return -1;
            int head = deleteHeadStack.pop();;
            return head;
        }
    }
    
    
    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    熟悉常用的Linux操作
    Hadoop综合大作业
    理解MapReduce
    熟悉常用的Hbase操作
    第三章 熟悉常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    综合练习:词频统计
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12345379.html
Copyright © 2011-2022 走看看