栈与队列
栈:又叫做后进先出(LIFO)表,对栈的基本操作只能是进栈(push)和出栈(pop)。而且这些操作只能在一个栈的栈顶进行。
栈的实现:栈既可以用链表实现也可以用顺序表实现,但栈一般用顺序表(数组)实现。因为所有的操作都是在栈顶,那么在插入和删除的情况下,这两个表的时间复杂度都是一样的。在这个前提下,那么用数组实现的话,访问会比较快。
队列(queue):也是一种表,但是一种先进先出的表(FIFO),队列的基本操作是入队(enqueue)和出队(dequeue),入队是在表尾实现的,出队是在表头实现的。
队列的实现:和栈一样,队列既可以用链表实现也可以用顺序表实现,但是一般用链表实现。如果用顺序表(数组)实现的话,如果对队列进行出队操作,那么所有的元素都得移动一位。这时候的时间复杂度是0(N)。但是可以用循环数组来减少时间复杂度。如果用链表实现,如果对队列进行出队操作,其时间复杂度只是0(1)。