[栈与队列]: 为啥叫栈?当插入和删除操作都在链表的一端进行时,它表现出先进后出的特性,为栈;
栈这个名字来源于我们日常生活中的一个场景——堆叠盘子。想象一下,我们在洗碗后,把干净的盘子一个一个堆放起来,放的时候总是把新的盘子放在最上面,而取用时,总是先取最上面的盘子。这就形成了一个“后进先出”(Last In First Out, LIFO)的顺序。
在计算机科学中,栈这种数据结构也是这样的工作方式:
- 插入操作(压栈):就像我们把盘子堆起来,新的元素总是被放在栈的最顶部。
- 删除操作(出栈):当我们需要取出元素时,总是先取出最顶部的元素,也就是最后被放入的那个。
因为这种操作方式就像是在堆叠物品,所以形象地称之为“栈”。每次操作都是在栈顶进行,就像我们只能看到堆叠物品的顶部一样,这也体现了栈的另一个特点——只有栈顶元素是可见的,其余元素都被“压”在下面。
在程序设计中,栈被广泛应用于以下场景:
- 函数调用:每当函数被调用时,当前的执行状态(比如返回地址和局部变量)会被保存在栈上;当函数返回时,这些状态会从栈上弹出。
- 表达式求值:算术表达式的解析和求值经常使用栈来处理操作数和操作符。
- 撤销操作:图形编辑器或其他软件中的撤销功能常常通过栈来实现,记录操作步骤,撤销时就是从栈中弹出操作。
- 内存管理:在许多编程语言中,局部变量的分配是通过栈来管理的。
因此,“栈”这个名称直观地反映了它的操作特性和使用方式。