java实现顺序栈

Posted mengxiaoleng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现顺序栈相关的知识,希望对你有一定的参考价值。

什么是栈

1.栈的英文是stack
2.栈是一个先入后出的有序列表
3.栈是限制线性表元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端是,为变化的一端,成为栈顶,另外的一端为固定的一端为栈底
4.栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除的情况刚好相反,最后放入的元素先删除,最先放入的元素后删除

栈的应用场景

1.子程序的调用,在跳向子程序之前会先将下一条指令的地址存放在堆栈中,直到子程序执行后再将地址取出,最后回到原来的程序之中
2.递归的调用,和子程序的调用类似,只是出了存储下一个指令的地址外,也将参数、区域变量、等数据压入栈中
3.表达式的转换与求值
4.二叉树的遍历
5.图形的深度优先搜索

代码

package stack;

public class ArrayStack 
    private int maxSize;//最大值
    private int[] stack;//栈
    private int top=-1;//栈顶
    
    //构造器
    public ArrayStack(int maxSize) 
        this.maxSize=maxSize;
        stack=new int[this.maxSize];
    
    
    //栈满
    public boolean isFull() 
        return top==maxSize-1;
    
    
    //栈空    
    public boolean isEmpty() 
        return top==-1;
    
    
    //入栈-push
    public void push(int value) 
        //先判断是否栈满了
        if(isFull()) 
            System.out.println("栈已经满了~");
            return;
        else 
            top++;
            stack[top]=value;
        
    
    
    //出栈-pop
    public int pop() 
        if(isEmpty()) 
            throw new RuntimeException("栈已经空了~");
        
        int value=stack[top];
        top--;
        return value;
    
    
    //遍历栈
    
    public void list() 
        if(isEmpty()) 
            System.out.println("栈空,没有数据~");
        
        for(int i=top;i>=0;i--) 
            System.out.printf("stack[%d]=%d\n",i,stack[i]);
        
    
    
    

测试类

package stack;

import java.util.Scanner;

public class TestArrayList 

    public static void main(String[] args) 
        // TODO Auto-generated method stub
        ArrayStack stack=new ArrayStack(4);
        String key="";
        boolean loop=true;
        Scanner scanner=new Scanner(System.in);
        while(loop) 
            System.out.println("show:显示栈");
            System.out.println("exit:退出测试");
            System.out.println("push:压栈");
            System.out.println("pop:出栈");
            System.out.println("请输入你的选择:");
            key=scanner.next();
            switch (key) 
            case "show":
                stack.list();
                break;
            case "push":
                System.out.println("请输入一个数:");
                int value=scanner.nextInt();
                stack.push(value);
                break;
            case "pop":
                try 
                    int res=stack.pop();
                    System.out.printf("出栈的元素为:%d\n",res);
                 catch (Exception e) 
                    // TODO: handle exception
                    System.out.println(e.getMessage());
                
                break;
            case "exit":
                scanner.close();
                loop=false;
                break;

            default:
                break;
            
        
        System.out.println("程序退出!");
    


以上是关于java实现顺序栈的主要内容,如果未能解决你的问题,请参考以下文章

N日一篇——Java实现栈

Java栈之顺序栈存储结构实现

N日一篇——Java实现栈

Java实现栈的顺序存储

java实现顺序栈

java实现顺序表