• 【数据结构与算法】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]);
            }
        }
    
    
    }
  • 相关阅读:
    C# comboBox实现省市两级联动(winform)
    Alter用法
    封装SQLHelper
    杨中科版C#射击游戏
    C# TXT文件导入至数据库
    C# 手机号码归属地查询
    C#中从数据库导出至txt
    解决C#中txt文档导入数据库时,中文显示乱码的问题
    第一篇博文与技术无关 纯瞎扯
    全国省市数据库
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860811.html
Copyright © 2020-2023  润新知