栈
在计算机领域,栈是一种用于存储对象集合的数据结构。可以使用 push 操作将单个项目添加并存储到栈中。可以使用 pop 操作检索对象,该操作会从栈中移除一个项目。
向栈中添加对象时,它会被放置在之前添加的所有项目之上。移除项目时,可以从栈顶或栈底移除。在移除栈顶项目的栈中,项目的顺序被视为“LIFO”(Last In, First Out,后进先出)。你可以将 LIFO 栈想象成一副扑克牌:将单张牌放在牌堆上,然后从顶部抽牌。在“FIFO”(First In, First Out,先进先出)栈中,项目从栈底移除。你可以将 FIFO 栈想象成自动售货机中的一排商品,商品会按照放入机器的顺序被取出。
栈在计算机编程中有多种用途。例如,LIFO 栈可用于从缓存中检索最近使用的对象。FIFO 栈可用于确保按照数据输入的顺序检索数据,这可以用于处理队列中的数据。
虽然软件程序员经常使用栈,但你在使用程序时通常不会注意到它们。这是因为栈的创建以及 push 和 pop 操作都会在应用程序运行时在后台执行,用户无法看到。不过,如果栈耗尽了内存,就会导致“栈溢出”。如果程序未正确处理栈溢出,可能会生成错误消息,或导致程序崩溃。
NOTE: “栈”一词也可以指协议栈,它由多个协同工作的网络协议组成。每个协议都归入 OSI 模型定义的七个不同层次之一。
测试你的知识