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

前言

今天,老师问我们为什么要学栈,我想了想,我们为什么要学数据结构。我就去百度搜了一下,答案给我的是,不想当将军的士兵不是好士兵。就是有剑不用和没剑可用是两个概念。就悟了,数据结构和算法难吗?难!学吗?干!
在这里插入图片描述

栈的定义

限定在表的一端进行插入和删除运算的线性表,通常将插入、删除的一端称为栈顶(top),另一端为栈底(bottom)。不含元素的空表为空栈。

相关运算

  • 置空栈
  • 判栈空
  • 判栈满
  • 进栈
  • 退栈
  • 取栈顶元素

相关代码

定义栈并初始化

	/**最大值*/
    private int maxSize =100;
    /**栈*/
    private int[] stack;
    /**栈顶*/
    private int top=-1;

    /**无参构造器**/
    public seqStack() {
    
    
        stack = new int[maxSize];
    }

    /**有参构造器**/
    public seqStack(int maxSize) {
    
    
        this.maxSize=maxSize;
        stack=new int[this.maxSize];
    }

判栈满

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

判栈空

	/**栈空*/
    public boolean isEmpty() {
    
    
        //判断是否为-1,就是判断是否为空
        return top==-1;

入栈

    /**入栈-push*/
    public void push(int value) {
    
    
        //先判断是否栈满了
        if(isFull()) {
    
    
            System.out.println(value+"入栈失败,因为栈已经满了~");
            return;
        }else {
    
    
            top++;
            stack[top]=value;
            System.out.println(stack[top]+"入栈成功");
        }
    }

出栈

    /**出栈-pop*/
    public int pop() {
    
    
        if(isEmpty()) {
    
    
            throw new RuntimeException("栈已经空了~");
        }
        int value=stack[top];
        top--;
        System.out.println(stack[top]+"已经退栈了");
        return value;
    }

遍历栈

    /**遍历栈*/
    public void tostring() {
    
    
        if(isEmpty()) {
    
    
            System.out.println("栈空,没有数据~");
        }
        for(int i=top;i>=0;i--) {
    
    
            System.out.print("stack[i]="+stack[i]+"\t");
        }
    }

全部代码

package com.数据结构.;

/**
 * @author:pier
 * 2021/10/28
 **/
public class seqStack {
    
    
    /**最大值*/
    private int maxSize =100;
    /**栈*/
    private int[] stack;
    /**栈顶*/
    private int top=-1;

    /**无参构造器**/
    public seqStack() {
    
    
        stack = new int[maxSize];
    }

    /**有参构造器**/
    public seqStack(int maxSize) {
    
    
        this.maxSize=maxSize;
        stack=new int[this.maxSize];
    }

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

    /**栈空*/
    public boolean isEmpty() {
    
    
        //判断是否为-1,就是判断是否为空
        return top==-1;
    }

    /**入栈-push*/
    public void push(int value) {
    
    
        //先判断是否栈满了
        if(isFull()) {
    
    
            System.out.println(value+"入栈失败,因为栈已经满了~");
            return;
        }else {
    
    
            top++;
            stack[top]=value;
            System.out.println(stack[top]+"入栈成功");
        }
    }

    /**出栈-pop*/
    public int pop() {
    
    
        if(isEmpty()) {
    
    
            throw new RuntimeException("栈已经空了~");
        }
        int value=stack[top];
        top--;
        System.out.println(stack[top]+"已经退栈了");
        return value;
    }

    /**遍历栈*/
    public void tostring() {
    
    
        if(isEmpty()) {
    
    
            System.out.println("栈空,没有数据~");
        }
        for(int i=top;i>=0;i--) {
    
    
            System.out.print("stack[i]="+stack[i]+"\t");
        }
    }
}

测试代码

package com.数据结构.;

/**
 * @author:pier 2021/10/28
 **/
public class Test {
    
    
    public static void main(String[] args) {
    
    
        seqStack ss = new seqStack(5);
        ss.push(1);
        ss.push(2);
        ss.push(3);
        ss.push(4);
        ss.push(5);
        ss.pop();
        ss.push(6);
        ss.push(7);
        ss.tostring();
    }
}

运行结果
在这里插入图片描述> 今天你学废了吗?
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43325476/article/details/121017545