基于简单数组的方法实现栈:Java语言实现

1 栈的简单介绍

       栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出(First In Last Out,FILO)的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作入栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

2 基于简单数组的方法实现栈

package Stack_Study;

/**
 * Created by Administrator on 2018/5/13.
 */
public class ArrayStack {
    private int top;//栈顶元素的位置
    private int capacity;//栈的容量
    private int[] array;//实现栈功能的数组

    public ArrayStack(int capacity) {
        this.capacity = capacity;
        array = new int[capacity];
        top = -1;
    }

    public int getTop() {
        return top;
    }

    public int getCapacity() {
        return capacity;
    }

    //判断栈中是否有元素
    public boolean isEmpty() {
        return top == -1;
    }

    //判断栈中是否存满元素
    public boolean isStackFull() {
        return (top == capacity - 1);
    }

    //入栈:将数据压入栈
    public void push(int data) {
        if(isStackFull()) {
            System.out.println("栈已满");
        }else {
            array[++top] = data;// top = top +1; array[top] = data;
        }
    }

    //出栈:删除并返回最后一个插入栈的元素
    public int pop() {
        if(isEmpty()) {
            System.out.println("栈为空");
            return 0;
        }else {
            return array[top--];//array[top] = data;top = top -1 ;
        }
    }

    //获取栈顶的元素,但不出栈
    public int top() {
        return array[getTop()];
    }

    //返回栈中元素的个数
    public int size() {
        return (top + 1);
    }

    //删除栈
    public void deteleStack() {
        top = -1;
    }
}

3 测试

package Stack_Study;

/**
 * Created by Administrator on 2018/5/13.
 */
public class ArrayStackTest {
    public static void main(String[] args) {
        ArrayStack stack = new ArrayStack(6);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        System.out.println(stack.pop());
        System.out.println(stack.size());
    }
}

4 参考资料

[1]  栈---百度百科
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值