26

不知道栈有什么用?可视化动图带你一步步讲解

 3 years ago
source link: http://developer.51cto.com/art/202007/620560.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

uA7J7n2.jpg!web
Qneuyqv.jpg!web
9e22b7f53b583fc1f2a208bfa38e68cd.jpeg

概念介绍

  • 栈(stack)是限定仅在表尾(即栈顶)进行插入和删除操作的线性表
  • 栈的2种操作方式
  • 插入操作,叫做进栈,也叫压栈、入栈
  • 删除操作,叫做出栈,也叫弹栈
  • 栈的2种存储方式
  • 顺序存储
  • 链式存储

原理讲解

当栈中只有9和12这2个元素时,效果如下图

ZFnAfmb.jpg!web

进栈操作

我们插入一个元素20,效果如下图

ei6Z3uQ.jpg!web

出栈操作

对于栈来说,出栈只能将栈顶元素删除。因此,执行一次出栈动作,就会删除掉栈顶元素20,效果如下图

22imaeF.jpg!web

至此,栈的实现原理讲解完毕

栈的优缺点

优点

  • 快速访问
  • 自动管理,不需要程序员管理
  • 空间被CPU高效管理,内存不会变成碎片

缺点

  • 只有局部变量
  • 受限于栈的大小(取决于操作系统)
  • 变量不能调整大小

栈的作用

  • 保存程序运行现场/上下文
  • 递归操作
  • 保存临时变量

效果展示

YNNzyev.gif

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK