栈和队列可以说是线性表的两个子集,即对元素的插入和删除做了一些限制。栈是一个只能从尾部插入和删除的线性表。队列是一个只能从头部删除,从尾部插入的线性表。栈和队列的这种特性,更适合用来描述现实世界的各种模型。
栈(FILO)只能操作尾部元素,只有删除尾部元素之后,才能操作新的尾部元素。这种特性使得栈可以很好的贴合某些实际应用,比如十进制整数转换为N进制整数。栈的一个非常有趣的应用是迷宫寻路,不断地将可能的路线压入栈,如果遇到死路则弹出,知道找到出口或者栈为空。
队列(FIFO)只能删除头部元素,只能从尾部插入。这个结构可以看作食堂买饭队列的一个抽象。队列如同一个码流,不断地从头部取走,又不断地从尾部追加。
栈和队列相对简单一些,就先聊到这里......