• 数据结构 - 栈和队列


    前言

              学习 栈和队列 内容!

    一、简介

    结构:栈和队列都属于数据结构中的线性结构,有前驱和后继的概念。
    特点:栈是后进先出,队列是先进先出
    明确:只要涉及到存储数据,一般都是设计数据结构。底层实现采用数组或链表。任何数据结构都是用来存放数据的,只不过不同的数据结构对数据的存取有着不同的要求。

    二、栈

    介绍

    1. 类比生活中的叠盘子:先洗完的盘子肯定是放在最下面的然后其他的依次往上放,最后洗完的那个盘子肯定是放在最上面的,需要用的时候也是从上往下依次拿取。
    2. 对于放盘子相当于存数据(入栈操作),取盘子相当于取数据(出栈操作)。
      在这里插入图片描述
    3. 操作:栈只能在一端(栈顶)进行存数据(入栈)和取数据(出栈),另一端(栈底)是封闭的。只能操作栈顶的数据 除了栈顶元素,其他元素是看不见的。
      在这里插入图片描述

    三、栈实现

    1. 数据结构学习的难点:理解、代码实现
    2. 实现栈的方式:所有的数据结构都可以通过两个基本的数据结构数组和链表来实现,数组实现的栈叫顺序栈,链表实现的栈叫链式栈
    3. 顺序栈:
      1. 核心:按照栈的要求去往数组中存、取数据
      2. 创建一个数组
      3. 栈顶指针(top),实时指向栈顶元素
      4. 空栈:top = -1,表示空栈
        在这里插入图片描述
      5. x 入栈:a[++top] = x
        在这里插入图片描述
           void push(int element){
            //首先需要判断栈是否已满
            if(top == size-1){
                throw new StackOverflowError();
            }
            else {
                a[++top] = element;
            }
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
      6. 出栈:top --
        在这里插入图片描述
        int pop(){
                //首先需要判断栈是否为空栈
                if(top == -1){
                    throw new EmptyStackException();
                }
                return a[top--];  // 返回要删除的元素
            }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7

    四、队列

    介绍

    1. 类比汽车依次过隧道
      在这里插入图片描述
    2. 队列只能再一端存数据,另一端取数据
      在这里插入图片描述
  • 相关阅读:
    mysql数据库简介
    uniapp 微信小程序仿抖音评论区功能,支持展开收起
    如何提高课堂教学效率?西安所高校出招了
    CART 算法——决策树
    Java8中Stream流的常用姿势
    【Python】模块和包
    如何创建与引擎独立的Iceberg表
    跨境物流小包费用怎么计算?
    Web APIs:事件高级--事件对象
    java毕业设计手机在线销售系统mybatis+源码+调试部署+系统+数据库+lw
  • 原文地址:https://blog.csdn.net/weixin_39903708/article/details/125496845