zoukankan      html  css  js  c++  java
  • 数据结构笔记——栈

    栈的应用及构造

    栈的简介

    栈是一种只能从一端进行删除和插入的线性结构。因此栈具有后进先出的特点。例如进栈顺序是12345,如果5是第一个出栈的数字,则接下来出栈的一定是4,3,2,1。由于栈后进先出的特点,所以栈经常被递归算法调用,此时栈被称为递归工作栈。从栈的容量来看,栈可被分为动态栈可静态栈。动态栈顾名思义即使栈的容量可变,静态栈即是栈的容量是固定的。

    用顺序表构造的静态栈及其操作

    1.栈的构造:申请给定大小空间,将栈顶指针指向栈底。
    2.栈的初始化:将栈的栈顶指针指向栈底。
    3.栈的插入:先检查是否栈满,若栈满,则报错。否则将栈顶指针上移一个单位,将元素插入栈顶。
    4。栈的删除:先检查是否栈空。若栈空,则报错。否则,删去栈顶元素,将栈顶下移一个单位。

    用顺序表构造的动态栈及其操作

    1.栈的构造:申请一定大小的空间。将栈栈顶指针指向栈底(-1)。
    2.栈的初始化:将栈顶指针指向栈底(-1)
    3.栈的插入:先检查是否栈满,若栈满,则申请一个是此时栈两倍大小新栈。将旧栈内容复制到新栈。并将旧栈空间释放。然后将栈顶指针上移一个单位。然后将新数据插入到栈顶指针所指位置。。
    4.栈的删除:先检查是否、栈空,若栈空,则报错。否则删除栈顶元素,并将栈顶元素下移一个单位。

    用链表构造的动态栈及其操作

    1.栈的构造:申请栈节点指针并赋值null(此栈节点指针即是栈顶指针)
    2.栈的初始化:将原有栈节点空间一个一个释放,并将栈顶指针指向空节点。
    3.栈的插入:申请一个新的栈节点,将插入数据放在此新申请节点的数据域。并将此新栈节点链入栈顶。将栈顶指针指向此新栈节点。
    4.栈的删除:先检查是否栈空。若栈空,则报错。否则将栈顶节点删除,并将栈顶指针指向下一个栈节点。

  • 相关阅读:
    「CSP-S 2019」树的重心「重心」
    「SDOI2017」天才黑客「优化建图最短路」
    「NOI Online Round2」 题解
    Qt 自定义序列化
    Android 定制化apk生成
    gradle上传jar包到maven公共仓库
    JAVA 插入注解处理器
    使用docker安装gitlab
    数据库递归树形查询优化
    JDBCTemplate使用
  • 原文地址:https://www.cnblogs.com/sunhere/p/8290008.html
Copyright © 2011-2022 走看看