9.10
9.11
栈和队列的基础知识
一、栈(Stack)
1. 定义:
• 栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出(Last In First Out,LIFO)的原则存储数据。
2. 基本操作:
• push(入栈):将一个元素添加到栈顶。
• pop(出栈):移除并返回栈顶元素。
• peek(查看栈顶元素):返回栈顶元素,但不删除它。
3. 应用场景:
• 函数调用栈:在程序执行过程中,函数的调用和返回可以用栈来管理。
• 表达式求值:例如逆波兰表达式求值。
• 深度优先搜索等算法中用于记录访问路径。
二、队列(Queue)
1. 定义:
• 队列是一种先进先出(First In First Out,FIFO)的线性表。只允许在一端进行插入操作,在另一端进行删除操作。
2. 基本操作:
• enqueue(入队):将一个元素添加到队列的末尾。
• dequeue(出队):移除并返回队列头部的元素。
• peek(查看队首元素):返回队列头部的元素,但不删除它。
3. 应用场景:
• 任务调度:按照任务到达的先后顺序进行处理。
• 广度优先搜索算法中用于记录待访问的节点。
• 消息队列等场景,实现异步通信。