数据结构-栈

更简单的介绍,在《程序是怎样跑起来的》一书中有简要形象的说明

一.栈的基本概念

栈是一种特殊的线性表,其插入删除操作都只能在表的尾部进行。

栈中允许插入、删除操作的一端称为栈顶,另一端称为栈底。

通常栈的插入操作叫入栈,栈的删除操作叫做出栈。

栈的插入和删除操作只允许在栈顶进行,每次入栈的元素即成为栈顶元素,每次最先出栈的总是栈顶元素,所以栈是一种后进先出的线性表。

二.顺序栈

1.介绍

顺序栈是用数组实现的,因为入栈和出栈操作都是在栈顶进行的,所以增加变量top来指示栈顶元素的位置,top指向栈顶元素存储位置的下一个存储单元的位置,空栈时top=0。

2.基本操作

1)入栈操作

入栈操作push(x)是将数据元素x作为栈顶元素插入顺序栈中,主要操作如下:

  1. 判断顺序栈是否为满,若满则抛出异常
  2. 将x存入top所指的存储单元位置
  3. top加1
def 

2)出栈操作

出栈操作pop()是将栈顶元素从栈中删除并返回,主要步骤如下:

  1. 判断顺序栈是否为空,若空则返回null
  2. top减1
  3. 返回top所指的栈顶元素的值
def 

3.应用

利用顺序栈实现括号匹配:

def 

三.链栈

1.介绍

采用链式存储结构的栈称为链栈,由于入栈和出栈只能在栈顶进行,不存在在栈的任意位置进行插入和删除操作,所以不需要设置头节点,只需要将指针top指向栈顶元素节点。

2.基本操作

1)入栈操作

入栈操作push(x)是将数据域为x的节点插入到链栈的栈顶,主要步骤如下:

  1. 构造数据值域为x的新节点
  2. 改变新节点和首节点的指针域,使新节点成为新的栈顶节点
def 

2)出栈操作

出栈操作pop()是将栈顶元素从链栈中删除并返回其数据域的值,主要步骤如下:

  1. 判断链栈是否为空,若空则返回null
  2. 修改top指针域的值,返回被删节点的数据域的值
def 

栈的top指针指向哪里_数据结构-栈相关推荐

  1. java数据结栈空的条件表达式_数据结构——栈和队列例题

    1.若一个栈的输入序列为1,2,3,-,n,输出序列的第一个元素是i,则第j个输出元素是_____. 选项ABCD均错误,第j个输出元素应为i-j+1. 栈是一种先进后出的数据结构,也就是说如果入栈顺 ...

  2. 怎么删除结构体数组中的一组数据_数据结构-栈

    数据结构-栈 1)栈的定义. 栈是只能通过访问它的一端来实数据存储和检索的一种线性数据结构,逻辑结构和线性表相同.特点在于运算有所限制:即主要特征是"后进先出"(先进后出). 在栈 ...

  3. 栈判断字符串是否为中心对称_数据结构和算法入门之判断括号字符串的合法性(valid parentheses)...

    今天终于开始看栈的部分咯!栈这个东西没啥好介绍的,我想基本只要写过一丢丢代码的人已经都非常清楚了.今天这个题目是一个非常简单但是也很经典地用到栈这个数据结构的题,废话不多说,原题链接如下: Loadi ...

  4. 数据结构算法 二进制转十进制_数据结构 - 栈

    两种类似数组的数据结构,在添加和删除元素时更为可控,他们就是栈和队列 栈是一种遵从后进先出(LIFO)原则的有序集合.新添加或待删除的元素都保存在栈的同一端,称作栈顶,另一端就叫栈底.在栈里,新元素都 ...

  5. c++数据结构队列栈尸体_数据结构-栈与队列(二)

    1.设有编号为1,2,3,4 的四辆列车,顺序进入一个栈式结构的站台,如图3.90所示.具体写出这四辆列车开出车站的所有可能的顺序,设栈容量为2. 1234 1243 1324 1342 2134 2 ...

  6. python全栈慕课网靠谱么_全栈和python的区别 ?

    1,全栈指的是人. 2,Python是一门编程语言. 全栈: 1,公司创始人/Co Founder全栈:技术+产品+设计+运营+销售+法务+融资+PR.作为公司创始人,在早期真的就是chief eve ...

  7. 数据结构 栈 入栈 输出 出栈

    数据结构 栈 入栈 输出 出栈 #include<bits/stdc++.h> /* #include<iostream> #include<> */ using ...

  8. 有十五个数按由大到小顺序存放在一个数组中_数据结构基础 (代码效率优化, 线性表, 栈, 队列, 数组,字符串,树和二叉树,哈希表)...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

  9. b+树时间复杂度_数据结构:线性表,栈,队列,数组,字符串,树和二叉树,哈希表...

    作者:张人大 代码效率优化 复杂度 -- 一个关于输入数据量n的函数 时间复杂度 -- 昂贵 与代码的结构设计有着紧密关系 一个顺序结构的代码,时间复杂度是O(1), 即任务与算例个数 n 无关 空间 ...

最新文章

  1. html建立复选框,创建一个像html复选框一样的div
  2. 搭建LAMP下的ucenter家园博客
  3. Android程序员的进阶之路
  4. MYSQL 加密函数的用法
  5. 9.13-15 runlevel init service
  6. 操作系统之进程管理:8、进程互斥的软件实现方法(单标志、双标志、Peterson)
  7. html div数据替换,在contenteditable div中替换innerHTML
  8. FPGA控制不其他芯片
  9. Python 的一个脚本错误可能会废掉 150 多个项目!
  10. Bailian4067 回文数字(Palindrome Number)【数学】
  11. 第三届蓝桥杯省赛---马虎的算式
  12. Redis主从架构和哨兵架构模式
  13. 使用电脑小技巧70个
  14. 纯js前端导出Excel表格(Excel科学计数法问题)
  15. 解决office 2003安装了office 2007兼容包还是打不开office 2007的文件
  16. 奖学金——信息学奥赛一本通1179题解
  17. 调用聚合数据新闻头条API
  18. ASM diskgroup dismount with Waited 15 secs for write IO to PST (文档 ID 1581684.1)
  19. pg_hint_plan 使用hint固定SQL执行计划
  20. 如何关闭苹果手机自动扣费_iPhone自动扣费怎么取消?App Store、微信、支付宝关闭自动扣费教程...

热门文章

  1. python面向对象编程98讲_谈面向对象的编程(Python)
  2. 鸿蒙系统开发者如何加入,鸿蒙开发实战系列之五:鸿蒙系统原生数据库
  3. Django框架 day03
  4. STM32 HAL库 UART 串口读写功能笔记
  5. 分子机制研究的五个层次,你的研究在哪个层次--转载
  6. MySQL--自增列学习
  7. jsp 9对象4作用域
  8. js 刷新页面window.location.reload();
  9. [ActionScript 3.0] AS3.0 对象在一定范围随机显示不重叠
  10. 中山大学提出新型行人重识别方法和史上最大评测基准