美文网首页
小米-基础算法-手写栈结构

小米-基础算法-手写栈结构

作者: luweicheng24 | 来源:发表于2019-01-28 11:20 被阅读0次

    实现一个栈,可以使用除了栈之外的数据结构
    eg:
    输入:
    push(1)
    pop()
    push(2)
    top() // return 2
    pop()
    isEmpty() // return true
    push(3)
    isEmpty() // return false

    个人实现:

    public class Stack {
        private int initCapacity = 8;
        private Integer top = null;
        private int curIndex = 0;
        private Integer[] stack = new Integer[initCapacity];
        /*
         * @param x: An integer
         * @return: nothing
         */
        public void push(int t) {
            // write your code here
             int length = stack.length;
            if (curIndex == length) {
                resizeCapacity();
            }
            top = t;
            stack[curIndex++] = t;
        }
     // 扩容
        private void resizeCapacity() {
            int length = stack.length;
            if (length >= Integer.MAX_VALUE) {
                throw new RuntimeException("the stack max empty is" + Integer.MAX_VALUE);
            }
            Integer[] newStack = new Integer[length << 1];
            System.arraycopy(stack, 0, newStack, curIndex-1, length);
            stack = newStack;
        }
        /*
         * @return: nothing
         */
        public void pop() {
            // write your code here
             if(top==null){
                return;
            }
            stack[--curIndex]=null;
            if(curIndex==0){
                top = null;
            }else{
                top = stack[curIndex-1];
            }
            
        }
    
        /*
         * @return: An integer
         */
        public int top() {
            // write your code here
          
            return top;
        }
    
        /*
         * @return: True if the stack is empty
         */
        public boolean isEmpty() {
            // write your code here
            return top == null;
        }
    }
    

    相关文章

      网友评论

          本文标题:小米-基础算法-手写栈结构

          本文链接:https://www.haomeiwen.com/subject/matajqtx.html