今天看数据结构,说到算法里面栈(stack)说到先入后出,我懵了一下,然后回味一下我记得的是后进先出,这么一想也没错.
可是自己觉得还是后进先出更符合栈的特性.也更容易理解记忆.
先入后出 和 后进先出(LIFO)字面是同一个逻辑,只是描述视角反过来了。C 函数调用栈的时候,用「后进先出」更贴合程序运行的真实过程。
栈的定义标准术语就是 Last In First Out,LIFO,后进先出。
- 后进先出:最后压进去的东西,最先拿出来,刚好对应函数调用:
调用 A → 调用 B → 调用 C。C 是最后入栈的,函数执行完最先返回销毁,回到 B;B 结束再回到 A。这就是 C 函数栈帧的工作方式,非常贴合。 - 先入后出:是换个角度描述,先进去的 A,最后才出栈。语义没错,但属于被动视角。
2026/9/25大约 2 分钟
