链接:https://pan.baidu.com/s/1z-kFKiNaezO0k2BWQ8l1Hw
提取码:asdf
1.堆栈
(1)堆栈的概念
栈:只允许在一段进行插入或删除操作的线性表
栈顶:允许插入和删除的一端
栈底:不允许插入和删除的一端
特点:后进先出(LIFO)Last in First Out
(2)堆栈的顺序和链式实现
顺序栈:
简单、方便、但易产生溢出(数组大小固定)
上溢:栈已经满,又要压入元素
下溢:栈已经空,还要弹出元素(一般认为是一种结束条件,即问题处理结束)
顺序栈的表示:
初始化操作:
判断是否为空:
求顺序栈的长度:
清空顺序栈:if(S.base)判断栈是否存在
销毁顺序栈:空间释放,free(S.base)
进栈操作:
出栈:top指针下移,元素出栈
链栈:运算受限的单链表,只能在链表头部进行操作
-
-
- 链表的头指针就是栈顶
- 不需要头结点
- 基本不存在栈满的情况
- 空栈相当于头指针指向空
- 插入和删除进在栈顶处执行
-
初始化:
判断是否为空:
入栈:
出栈:free(p)
取栈顶元素:
基本要求:掌握堆栈的概念和特点,能够实现顺序堆栈和链式堆栈的基本操作
2.队列
(1)队列的基本概念:先进先出
(2)顺序循环队列
初始化队列
求循环队列长度:
入队:
出队
取队头元素
(3)链式队列
初始化:
销毁链队列
链队列——将元素e入队
链队列——将元素e出队
取出队头元素
(4)优先级队列
基本要求:掌握队列的概念和特点,掌握顺序循环队列的概念和特点,能够实现队列的基本操作,掌握优先级队列的概念
3.堆栈和队列的应用
基本要求:理解堆栈和队列的经典应用:括号匹配问题,算术表达式计算问题,迷宫问题,调度问题