栈只有一个开口,先进去的就到最底下,后进来的就在前面,要是拿出去的话,肯定是从开口端拿出去,所以说先进后出,后进先出。如图所示:
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
参考资料:百度百科 栈
栈,英文stack,特性是“先进后出”(很自然也就“后进先出”了),即First In Last Out,所以也称为Filo;就如楼上所说,仓库是个例子,再给你个更形象的例子,桶装薯片肯定吃过吧,假设薯片是机器一个一个放进去的,你吃的第一个薯片肯定是最后放进去的(后进先出),而你吃的最后一片才是第一个放进薯片桶的(先进后出);由于栈的这种特性,可以暂时存储数据并以Filo的方式读取,所以是一个常用的数据结构并且可以在某些算放中提高效率。
于此对应的是队列,英文queue,特性相反,为“先进先出”(自然后进后出了),First In first Out,固又名Fifo,就像你排队一样,先到先得,比如洗车通道,先进去的车,会先从出口出来,最后进的最后洗完。也是一种数据结构,可以提高效率。
因此这两种数据结果做为对应关系,需要一起学习掌握。
因为栈只限定在栈顶进行插入和删除操作。像木桩钉在地上,只能在桩顶套入环片,在最下面的说明是最先套上去的,他想出来,必须先把上面的拿掉先,而上面的是后放上去的!
编程中栈就像是货仓一样,先存进来的放在下面,后面存进来的一个个往上摞,拿出去的时候从上面往外拿,接着下面的顶上去,呵呵
同意楼上回答 说的很形象