码迷,mamicode.com
首页 > 其他好文 > 详细

<剑指offer> 第5题

时间:2019-08-09 01:47:44      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:tput   功能   java   题目   code   显示   实现   delete   rem   

题目:

用两个栈实现一个队列。队列声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。

 

思路:

栈1用于存储元素,栈2用于弹出元素,负负得正

 

代码实现:

import java.util.Stack;

public class MyQueue {

    //push后pop给output
    private Stack<Integer> input;
    //push input的元素后pop出栈显示元素
    private Stack<Integer> output;

    private MyQueue(){
        input = new Stack<>();
        output = new Stack<>();
    }

    //只要output栈为空,input栈不为空,就把input中所有的元素都压入output
    private void transfer(){
        if(output.isEmpty()){
            while(!input.isEmpty()){
                output.push(input.pop());
            }
        }
    }

    //队列尾加一个元素
    public void add(int i){
        input.push(i);
        transfer();
    }

    //删除队首元素
    public int remove(){
        if(input.isEmpty() && output.isEmpty()){
            throw new RuntimeException("queue is Empty");
        }
        transfer();
        return output.pop();
    }

    public int peek(){
        if(input.isEmpty() && output.isEmpty()){
            throw new RuntimeException("queue is Empty");
        }
        transfer();
        return output.peek();
    }

    public boolean isEmpty(){
        return input.isEmpty() && output.isEmpty();
    }




}

 

<剑指offer> 第5题

标签:tput   功能   java   题目   code   显示   实现   delete   rem   

原文地址:https://www.cnblogs.com/HarSong13/p/11324620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!