栈的理解

2019-07-31  本文已影响0人  pujess

栈是什么?听别人讲很多例子,但却只是理解浅浅的一层。
栈不是什么计算机存数据的物理方式,实际为——许多真真切切的问题

1.定义

栈是限定仅在表尾进行插入和删除操作的线性表

看过我之前关于线性表理解的文章就很容易理解这个定义,栈——面向问题的一种逻辑结构。
比如说子弹匣装填子弹就是一个实际问题,栈其实就是描述子弹装上去、卸下来这个过程的逻辑,和计算机无关,线性表亦是如此。

那么为什么既然说栈是线性表,要单独拿出来说呢?
——问题与问题之间关注的东西是不同,线性表关注的是一个个排好队的元素和它们的各种变化,而栈关注的也是这些排好队的元素,但是栈只关注一种情况:只在表尾增删。就像子弹装填问题一样,我们不需要关注从中间拿出一颗子弹需要怎么做,怎么查找到印有图案那一颗子弹,我们只关注子弹排列末尾的弹出和插入。因此!栈单独拿出来描述范围更小更精确问题,更加有效率。

2.应用

既然是面向问题的逻辑结构,当然最重要的还是实际问题的应用。

其他

另外共享栈这个概念,我之前有疑问,既然栈能够共享,为什么线性表就不能呢?我思考的结果是,线性表描述问题的方式使得不可以把顺序存储的线性表共享,因为——里面有一个length是描述线性表长度的,而描述栈的是一个指针,虽然作用基本相同,但是!它们代表的含义不同!如果强行概念偷换会让描述线性表的属性失去本来的意义。

上一篇 下一篇

猜你喜欢

热点阅读