文章目录

  • 简介
  • 栈的构成
  • 栈的实现
    • 使用数组来实现栈
    • 使用动态数组来实现栈
    • 使用链表来实现

简介

栈应该是一种非常简单并且非常有用的数据结构了。栈的特点就是先进后出FILO或者后进先出LIFO。

实际上很多虚拟机的结构都是栈。因为栈在实现函数调用中非常的有效。

今天我们一起来看学习一下栈的结构和用法。

栈的构成

栈一种有序的线性表,只能在一端进行插入或者删除操作。这一端就叫做top端。

定义一个栈,我们需要实现两种功能,一种是push也就是入栈,一种是pop也就是出栈。

当然我们也可以定义一些其他的辅助功能,比如top:获取栈上最顶层的节点。isEmpty:判断栈是否为空。isFull:判断栈是否满了之类。

先看下入栈的动画:

再看下出栈的动画:

栈的实现

具有这样功能的栈是怎么实现呢?

一般来说栈可以用数组实现,也可以用链表来实现。

看动画学算法之:栈stack相关推荐

  1. 看动画学算法之:二叉搜索树BST

    文章目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 看动画学算法之:二叉搜索树BST 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的 ...

  2. 看动画学算法之:排序-基数排序

    文章目录 简介 基数排序的例子 基数排序的java代码实现 基数排序的时间复杂度 简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过 ...

  3. c++排序数组下标_看动画学算法之:排序 - 基数排序

    简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀. 而解决大范围的元素排序的办 ...

  4. 看动画学算法之:递归和递归树

    文章目录 简介 递归树和阶乘 斐波那契数列 GCD最大公约数 N中选K 0-1背包问题 硬币找零问题 数组的最长递增子序列 旅行商问题 简介 在之前我们介绍的很多数据结构和算法都用到了递归,递归非常容 ...

  5. java 插入排序_看动画学算法之:排序-插入排序

    简介 插入排序就是将要排序的元素插入到已经排序的数组中,从而形成一个新的排好序的数组. 这个算法就叫做插入排序. 插入排序的例子 同样的,假如我们有一个数组:29,10,14,37,20,25,44, ...

  6. 冒泡排序java代码_看动画学算法之:排序冒泡排序

    点击上方的蓝字关注我吧 程序那些事 简介 排序可能是所有的算法中最最基础和最最常用的了.排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序. 排序算法有很多种,每个都有 ...

  7. sqlserver 根据数组排序_看动画学算法之:排序-count排序

    简介 今天我们介绍一种不需要作比较就能排序的算法:count排序. count排序是一种空间换时间的算法,我们借助一个外部的count数组来统计各个元素出现的次数,从而最终完成排序. count排序的 ...

  8. 看动画学算法之:排序-count排序

    文章目录 简介 count排序的例子 count排序的java实现 count排序的第二种方法 count排序的时间复杂度 简介 今天我们介绍一种不需要作比较就能排序的算法:count排序. coun ...

  9. 看动画学算法之:排序-归并排序

    文章目录 简介 归并排序的例子 归并排序算法思想 归并排序的java实现 归并排序的时间复杂度 简介 归并排序简称Merge sort是一种递归思想的排序算法.这个算法的思路就是将要排序的数组分成很多 ...

最新文章

  1. 传智168期JavaEE struts2杜宏 day 29~day31笔记(2017年2月4日23:14:00)
  2. 剑指offer:数组中只出现一次的数字
  3. 关于spring cloud 各种组件的停更/升级/替换
  4. 计算机科学与技术初级知识,计算机科学与技术专业课程有哪些
  5. Intent 简单用法
  6. php strstr 与 str_replace区别,[PHP]strstr(),substr(),str_replace(),parse_str()
  7. 斯蒂芬金被退稿_斯蒂芬·金(Stephen King)对技术作家的实用建议
  8. 苹果2019新款iPhone售价惊曝:咬牙仍坚持高价位?
  9. mysql数据库备份和还原的命令_Mysql数据库备份和还原常用的命令
  10. 【STL源码剖析读书笔记】自己实现stack之MyStack(底层用MyList)
  11. struts2 result随笔
  12. 比特币以太坊数字货币钱包安全助记词安全问题
  13. 痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用
  14. 计算机毕业设计论文资料查找
  15. 同样是写博客,为什么我男朋友的粉丝那么多?!
  16. 网站死链接检测与完美处理方法
  17. java since,javadoc:@version和@since
  18. 部分手机打开USB调试,安装失败解决办法
  19. 【30-60s计数器电路设计】数电课设
  20. 前端实现pdf文件的在线预览与下载

热门文章

  1. TensorRT安装教程
  2. 3_7 MementoMode 备忘录模式
  3. 【玩转cocos2d-x之八】精灵类CCSprite
  4. 云计算的背后到底是什么?
  5. Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数
  6. 一道非常经典C++面试题|大厂面试
  7. 内推|底层翻身的机会来了,快来看一看!
  8. 实战|QUIC协议助力腾讯业务提速30%
  9. 全面解析 Netflix 的微服务架构设计
  10. 如果我问你:排序算法的「稳定性」有何意义?你怎么回答?