我第一次接触这种数据结构的时候,就对它存在的意义产生了很大的疑惑。因为我觉得,相比数组和链表,栈带给我的只有限制,并没有任何优势。那我直接使用数组或者链表不就好了吗?为什么还要用这个“操作受限”的“栈”呢?
事实上,从功能上来说,数组或链表确实可以替代栈,但你要知道,特定的数据结构是对特定场景的抽象,而且,数组或链表暴露了太多的操作接口,操作上的确灵活自由,但使用时就比较不可控,自然也就更容易出错。
所以,设计上应该只暴露应该对外提供的东西,这样更安全。有时候要求后期可以扩展,设计上要灵活。但对栈来说,不提供扩展,后期要改,只能改数据结构为数组等。实际业务上需求设计,这就需要权衡。
函数调用栈:这让我想起来尾递归优化,很奇妙
浏览器的前进后退,需要两个栈哦,^_^