栈的简单理解

前言:
对栈的简单剖析,易理解

数据结构与算法,对于程序来说,可以说是必不可少的,对于我们这些搬砖的,也是必须掌握的。

栈的定义

栈,是一种特殊的线性表,它限定其中的元素只允许在线性表的一端进行插入和删除,允许操作的一端称之为栈顶,不允许操作的一端称为栈底

重要特性

  • 后进先出、先进后出[LIFO表]
  • 栈是加了限制条件的线性结构
  • 进栈和出栈只能从栈的一个端点进行
  • 栈中的元素个数可以是0,此时是空栈
  • 栈的元素可以变化,可以是多个,但不是无穷个
  • 每个栈中的元素类型相同

理解举例

  • 进电梯,先进去的后出来、后进去的先出来
  • 打开网站浏览器,返回上一页的操作:浏览器将用户访问的网站组织成一个栈,用户每访问一个新页面,即进行入栈操作,返回上一页,则出栈操作

经典例题

设置入栈的序列为1234,则出栈序列不可能为< > 答案
A 4321
B 3421
C 4312
D 1234

如果能完整的解答这一题,我相信对栈的理解应该是比较清楚的了,下面来说说解题的思路

解题思路:
  • 如果你的第一反应是只有4321的出栈序列,那么掌握的可以说很差了
  • 表面上是这样,但是该题并没有规定出栈的序列,只是说明了入栈的序列
  • 设定1先进、先出,234后入、后出,则为1432;若设定12先入、先出,34后入、后出,则为2143;以此类推

解法步骤
>存在情况
  • 设定先出为1,存在情况 1234、1243、1324、1342、1432
  • 设定先出为2,存在情况 2134、2143、2314、2341、2431
  • 设定先出为3,存在情况 3241、3214、3421
  • 设定先出为4,存在情况 4321
>不存在情况
  • 1423
  • 2413
  • 3124、3142
  • 4123、4132、4231、4213、4312

结束语

相信你如果认真地看完这篇文章,那么肯定已经理解栈了,如果想要加深了解的话,可以找些题来做一做

你可能感兴趣的:(数据结构与算法)