1. 栈(Stack)
定义和基本特性
栈(Stack)就像是一个只能从一端进出的箱子,最后放入的物品最先拿出来,遵循先进后出(LIFO)的原则。
栈的优缺点分析
优点:
- 后进先出:最后处理的数据最先被取出,非常适合某些问题的解决方式。
- 简单明了:操作简单,只需考虑栈顶元素。
缺点:
- 大小固定:通常实现时需要预设最大容量,不能动态扩展。
- 不支持随机访问:只能访问栈顶元素,无法直接访问其他元素。
栈的应用场景和算法示例
- 递归算法:函数调用时使用栈保存返回地址和局部变量。
- 表达式求值:中缀表达式转换为后缀表达式并计算结果。
2. 队列(Queue)
定义和基本特性
队列(Queue)就像是排队买票的人群,先来的先买到票,先进入队列的元素先被取出,遵循先进先出(FIFO)的原则。
队列的优缺点分析
优点:
- 先进先出:保证数据的顺序性,符合很多实际问题的需求。
- 广泛应用:在各种算法和系统中都有重要的应用场景。
缺点:
- 不支持随机访问:只能访问队首和队尾元素,中间元素无法直接访问。
队列的应用场景和算法示例
- 任务调度:多任务系统中的任务排队执行。
- 广度优先搜索(BFS):图算法中常用的搜索策略。