java数据结构之栈(Stack)的实现模拟

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

目录

前言

一、Stack (栈)是什么?

二、具体实现

1.思路分析

2.辅助方法isFull isEmpty

3.push方法 (入栈)

4.pop方法(出栈) 

5. list 与peek方法 (遍历和取值方法)

总结



前言

本文将使用java语言使用int[] 数组模拟实现栈以及其基本方法(入栈出栈遍历等)

一、Stack (栈)是什么?

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

二、具体实现

1.思路分析

栈的成员变量至少应该包括以下三个部分:

private int maxSize;//栈的大小
private int[]   stack;//数组模拟栈,数据就放在数组
private int top=-1; //top 表示栈顶 初始化为-1

通过移动top来表示栈中元素的个数

代码如下:

 private int maxSize;//栈的大小
    private int[]   stack;//数组模拟栈,数据就放在改数组
    private int top=-1; //top 表示栈顶 初始化为-1
    //构造器
    public ArrayStack(int maxSize ){
        this.maxSize=maxSize;
        stack=new int[this.maxSize];
    }

2.辅助方法isFull isEmpty

判断栈是满还是空 可以通过top的值来判断,如果为空 top就是初始值-1 如果满了 就是初始值加上maxSize

//栈满
    public boolean isFull(){
        return top==maxSize-1;
    }
    //栈空
    public boolean isEmpty(){
        return top==-1;
    }

3.push方法 (入栈)

入栈方法 push 将一个元素放入栈中 top 向上移动一位 ,然后令stack 数组的第top 个元素=value;

 //入栈 push
    public void push(int value){
        //先判断是不是满了
        if (isFull()){
            return;
        }
        top++;
        stack[top]=value;
    }

4.pop方法(出栈) 

出栈方法思路:首先判断栈是否为空 ,如果是空,就不能再出栈了,如果不为空将栈顶元素 即 stack[top]赋值给一个新的对象 然后将top指针下移一位 返回刚刚创建的对象

 public int pop(){
        if (isEmpty()){
            throw new RuntimeException();
        }
        int value = stack[top];
        top--;
        return value;
    }

将异常对象的引用传递给throw,从效果上看,它就像从方法中“返回”一样,可以将异常处理当做一种不同的返回机制。不同的是return返回到方法调用点,throw返回到异常处理程序。 

5. list 与peek方法 (遍历和取值方法)

 

 public void list(){
        if (isEmpty()){
            throw new RuntimeException();
        }

        for (int i=top ;i>=0;i--){
            System.out.println(stack[i]);
        }
    }


    public int peek() {
        return stack[top];
    }

总结

以上就是数据结构栈的基本方法 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值