【数据结构与算法】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\n",i,array[i]);
        }
    }


}

 

全部评论

相关推荐

在打卡的大老虎很想潜...:你在找实习,没啥实习经历,技术栈放前面,项目多就分两页写,太紧凑了,项目你最多写两个,讲清楚就行,项目背景。用到的技术栈、亮点、难点如何解决,人工智能进面太难了,需求少。你可以加最新大模型的东西
点赞 评论 收藏
分享
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务