栈——后入先出
- 利用数组实现,有stack.top表示栈顶元素,为数组的最后一个元素。(也可利用链表实现)
- 验证栈是否为空:
stack.top如果小于0,即为空。 - 栈的压入(push):
数组长度加1,在数组末端增添新入栈的元素。 - 栈的弹出(pop):
弹出处于数组末端的元素,数组长度减1。
队列——先入先出
- 队列具有两个指针:queue.head,queue.tail
- 可利用数组或链表实现:
- queue.head指队头元素(数组第一位元素)
- queue.tail指队尾元素(数组最后一位元素)
- 队列有入队和出队两种操作:
- enqueue:队尾增加新元素,queue.tail += 1
- dequeue:队头元素出队,queue.head += 1
- 队列有上溢和下溢两种异常:
- 上溢:queue.tail = queue.length - 1,添加新元素发生上溢
- 下溢:queue.head = queue.tail - 1,