数据结构&算法_栈(java实现)

数据结构&算法_栈(stack)

定义:

栈是一个先入后出的有序列表.

特点:

  • 栈实现制线性表中元素的插入和删除只能在线性表的同一段进行的一种特殊线性表.允许插入和删除的一段,为变化的一端,我们称之为栈顶,另外一端为固定的一端我们称之为栈底
  • 先放入的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除

java实现栈

package online.zcc815.stack;

import java.lang.reflect.Array;

/**
 * Project  DataStructures
 * Package  online.zcc815.stack
 *
 * @Description
 * @Author ZCC
 * @Email zcc815@126.com
 * @Date 2020/6/22 22:25
 * @Version 1.0.0
 */
public class ArrayStackDemo {
    public static void main(String[] args) throws Exception {
        //创建栈
        StackDemo stack = new StackDemo(5);
        stack.pop(1);
        stack.pop(2);
        stack.pop(3);
        stack.pop(4);
        stack.pop(5);
        stack.printStack();
        System.out.println("-------------");
        //测试栈是否已经满了
        //stack.pop(6);
        //出栈
        stack.push();
        stack.printStack();
        stack.push();
        stack.push();
        stack.push();
        stack.push();
        stack.printStack();
        System.out.println("-------------");

    }
}
class StackDemo{
    private int maxSize; //栈的大小
    private int[] stack  ; //存储数据
    private int top = -1 ; //栈顶

    public StackDemo() {
    }

    public StackDemo(int maxSize) {
        this.maxSize = maxSize;
        stack = new int[maxSize];
    }

    public int getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(int maxSize) {
        this.maxSize = maxSize;
    }

    public int[] getStack() {
        return stack;
    }

    public void setStack(int[] stack) {
        this.stack = stack;
    }

    //判断栈是否为null
    public boolean isNull(){
        return top == -1;
    }
    //判断栈是否满了
    public boolean isFull(){
        return maxSize==top+1;
    }
    //入栈操作
    public void pop(int value){
        //判断栈是否已经满了
        if (isFull()){
            System.out.println("栈已经满了");
            return;
        }
        stack[top+1]=value;
        top++;
    }
    //出栈操作
    public int push() throws Exception {
        //判断栈是否为null
        if (isNull()){
            throw new Exception("栈已经空");
        }
        top--;
        return stack[top+1];
    }
    //打印栈中的数据
    public void printStack() throws Exception {
        //判断栈是否为null
        if (isNull()){
            throw new Exception("栈已经空");
        }
        for (int i = top; i >= 0; i--) {
            System.out.println(stack[i]);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值