数据结构之基于Java的顺序栈实现

本文介绍了一个基于Java实现的栈数据结构。通过具体代码展示了栈的基本操作,如元素入栈、出栈、查看栈顶元素及判断栈是否为空等,并解释了栈空间扩展的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。

public class StackArray implements Stack {

    private final int LEN = 4;  //数组的默认大小
    private Object[] elements;  //数据元素数组
    private int top;            //栈顶指针

    public StackArray() {
        top = -1;
        elements = new Object[LEN];
    }

    public int getSize() {
        return top+1;
    }//返回堆栈的大小

    public boolean isEmpty() {
        return top<0;
    }//判断堆栈是否为空

    public void push(Object e) {
        if (getSize()>=elements.length) expandSpace();
        elements[++top] = e;
    }//数据元素e入栈

    private void expandSpace(){
        Object[] a = new Object[elements.length*2];
        for (int i=0; i<elements.length; i++)
            a[i] = elements[i];
        elements = a;
    }

    public Object pop() throws StackEmptyException {
        if (getSize()<1)
            throw new StackEmptyException("错误,堆栈为空。");
        Object obj = elements[top];
        elements[top--] = null;
        return obj;
    }//栈顶元素出栈

    public Object peek() throws StackEmptyException {
        if (getSize()<1)
            throw new StackEmptyException("错误,堆栈为空。");
        return elements[top];
    }//取栈顶元素
}

public interface Stack {
    //返回堆栈的大小
    public int getSize();

    //判断堆栈是否为空
    public boolean isEmpty();

    //数据元素e入栈
    public void push(Object e);

    //栈顶元素出栈
    public Object pop() throws StackEmptyException;

    //取栈顶元素
    public Object peek() throws StackEmptyException;
}

package dsa.exception;

//堆栈为空时出栈或取栈顶元素抛出此异常
public class StackEmptyException extends RuntimeException{

    public StackEmptyException(String err) {
        super(err);
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值