用数组来实现Stack

Posted dazhu123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用数组来实现Stack相关的知识,希望对你有一定的参考价值。

1:Stack特点

  stack:栈,是一种特殊的数据结构,有着先入后出的特点(first in last out)。stack中栈底始终不变,只有一端能变化。栈顶在有数据push的时候增大,有数据pop的时候减小!相比于队列Queue而言,队列是先进先出(first in first out),队列有数据进来时,写指针增加,而有数据读出时,读指针增大,两个指针都是可变的!

2:应用场景

  子程序的调用,递归程序的调用以及中缀表达式的实现

3:代码实现

下面更过上面的分析,基于数组来实现stack的pop,push的功能

//使用数组来构建stack
class stackInArray{
    
    private Object[] array;//数组
    private int stackBottom ;//stack的底部指向array的地步array[0]
    private int stackTop ;//stack的底部指向array的地步array[0]
    
    
    public stackInArray(Object[] o ){
        this.array = o;//指向构造的数组当作stakc的内存
        this.stackBottom = 0;
        this.stackTop = 0;
    }
    
    //出栈
    public Object stackPop() {
        Object o = null;
        if(stackTop == 0) {
            System.out.println("内存已空,无法出数据");
        }
        else {
            stackTop--;
            o = array[stackTop];
        }
        return o;
    }
    
    //进栈
    public void stackPush(Object o) {
        if(stackTop == array.length) {
            System.out.println("内存已满,无法存入");
            return ;
        }
        else {
            array[stackTop] = o;
            stackTop++;
        }
    }
}

 

以上是关于用数组来实现Stack的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer(五,六),用两个栈实现队列,旋转数组的最小数字

用数组实现栈(C++)

[ZOJ 4016] Mergable Stack

为啥 Stack<T> 和 Queue<T> 用数组实现?

用java编写出来:用数组实现一个栈

用两个栈实现队列