今天校招java后端视频面试,面试官出的一道题,要求用java代码8分钟写出。题目是用栈模拟队列的功能,用pop(),push()方法实现。

刚看到题感觉以前见过,脑海里便在压力下飘过了无数的想法,最后灵光一闪想到可以用两个栈结构来模拟队列。于是匆匆码代码,没想到要封装为泛型类,可能因为时间紧,自己菜吧,最后被面试官教育了,菜就要好好学习,不能飘。不说了,贴下我事后写出的代码,不高级。

package com.huyong;

import java.util.Stack;

public class exam {
    public static void main(String[] args) {
        Integer[] num = new Integer[]{1,2,3,4};
        StackImQueue<Integer> siq = new StackImQueue<Integer>();
        System.out.println("-------------用栈模拟队列-------------");
        for(Integer n:num){
            System.out.println("依次入队的数据:"+n);
            siq.push(n);
        }
        for(Integer n:num){
            System.out.println("依次出队的数据:"+siq.pop());
        }
        siq.clear();
    }
}

class StackImQueue<T>{
    private T t;
    private Stack<T> s1 = new Stack<>();
    private Stack<T> s2 = new Stack<>();

    public void push(T t){
        s1.push(t);
    }
    public T pop(){
        while(!s1.isEmpty()){
            s2.push(s1.pop());
        }
        return s2.pop();
    }
    public void clear(){
        s1.clear();
        s2.clear();
    }
}

这样就用栈实现了队列的功能,运用了java封装的思想。
想想当时有点傻,不说了,人菜去学习了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值