自己动手写数据结构之栈的实现

2020-11-22  本文已影响0人  逍遥白亦

栈的实现

1 定义

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

类似于一个狭窄的山洞,只有一个出口,所以谁后进来谁就可以先出去

2 基本操作和元素

入栈(PUSH)

出栈(POP)

栈顶元素 top

3 实现一个栈

public class Stack<E> {

    private E[] stackArray;

    private int maxSize;

    private int top;
    
    @SuppressWarnings("unchecked")
    public Stack(int maxSize) {
        this.stackArray = (E[]) new Object[maxSize];
        this.maxSize = maxSize;
        this.top = -1;
    }

    boolean push(E data) throws Exception {
        if (isFull()){
            throw new Exception("The stack is Full");
        }

        stackArray[++top] = data;
        return true;
    }

    public E pop() throws Exception{
        if (isEmpty()){
            throw new Exception("The stack is Empty");
        }

        return stackArray[top--];

    }

    public E peek(){
        return stackArray[top];
    }

    private boolean isEmpty(){
        return top == -1;
    }

    private boolean isFull(){
        return top == maxSize-1;
    }
}
上一篇下一篇

猜你喜欢

热点阅读