zoukankan      html  css  js  c++  java
  • 【数据结构与算法】4.1 数组实现栈结构

    1、栈结构

    1、栈是先进后出的有序列表。

    2、(Stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行进行的一种特殊线性表。

         允许删除和添加数据的一端是栈顶。固定不变的一端是栈底。

    2、代码实现

    package com.hblg.guigu.stack;
    
    import java.util.Scanner;
    
    /**
     * @author i
     * @create 2019/9/20 20:47
     * @Description 用数组来实现栈的push pop
     */
    public class MyStackDemo {
    
        public static void main(String[] args) {
            MyStack myStack = new MyStack(5);
            Scanner scanner = new Scanner(System.in);
            boolean flag = true;
            String strValue = null;
            while(flag){
                System.out.println("show()显示栈数据");
                System.out.println("exit()程序退出");
                System.out.println("pop()数据弹栈");
                System.out.println("push()数据入栈");
    
                strValue = scanner.next();
                switch (strValue){
                    case "show":
                        myStack.show();
                        break;
                    case "exit":
                        scanner.close();
                        flag = false;
                        break;
                    case "push":
                        System.out.println("请输入一个数据");
                        int value = scanner.nextInt();
                        myStack.push(value);
                        break;
                    case "pop":
                        System.out.println(myStack.pop());
                        break;
                }
                System.out.println("程序执行完毕!");
            }
    
        }
    
    }
    
    /***
     * 用数组实现栈的操作
     */
    class MyStack{
    
        private int [] array = null;//用数组来存储数据
        private Integer maxSize;
        private Integer top = -1;//表示栈底
        //初始化数组大小
        public MyStack(Integer maxSize){
            this.maxSize = maxSize;
            array = new int[maxSize];
        }
    
        //栈满
        public boolean isFull(){
            return top == maxSize-1;
        }
    
        //栈空
        public boolean isEmpty(){
            return top == -1;
        }
    
        //入栈
        public void push(Integer data){
            if(isFull()){
                System.out.println("栈满 无法添加~");
            }
            array[++top] = data;
        }
    
        //出栈
        public int pop(){
            if(isEmpty()){
                throw  new RuntimeException("栈空 无法查看~");
            }
            int value = array[top];
            top--;
            return value;
        }
    
        //遍历
        public void show(){
            if(isEmpty()){
                System.out.println("占空 无法遍历~");
            }
            for (int i = top; i >= 0; i--) {
                System.out.printf("array[%d]=%d
    ",i,array[i]);
            }
        }
    
    
    }
  • 相关阅读:
    简述 JPA 与 Spring Data JPA 与 Hibernate
    idea不识别yml配置文件,怎么办?
    Java 数组如何转成List集合
    git关于 LF 与 CRLF
    git报错:src refspec master does not match any
    蓝桥杯- 基础练习:十六进制转八进制
    蓝桥杯- 基础练习:数列排序
    蓝桥杯-入门训练 :A+B问题
    蓝桥杯-入门训练 :序列求和
    蓝桥杯-入门训练 :圆的面积
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860811.html
Copyright © 2011-2022 走看看