栈是一种线性数据结构,属于先入后出(FILO),栈的栈底和栈顶是有区分的,最早进入的元素存放的位置叫做栈底(bottom),最后进入的元素存放的位置叫做栈顶(top)。
栈这种数据结构既可以用数组来实现,也可以用链表来实现。
在Python中,列表很好的实现了栈的功能,append方法相当于入栈,pop方法相当于出栈。
队列是一种线性数据结构,属于先入先出(FIFO),队列的出口叫队头(front),队列的入口叫队尾(rear)。既可以用数组来实现,也可以用链表来实现。但是用数组实现时,把队尾位置规定为最后入队元素的下一个位置。
关于队列,我们经常使用的是循环队列,这样可以节省空间,使用循坏队列时,队尾始终在入队元素的下一个位置,当(rear+1)%数组长度(即Maxsize)=front时,代表队列已满,当rear=front时,队列为空。需要注意。队尾指针指向的位置永远空出一位,所以队列最大容量比数组长度小1。
Python中的队列工具是:collections.deque ,queue.Queue等。