[计算机软件及应用]数据结构第3章栈和队列
第三章 栈、队列 第3章 栈、队列 内容提要: 本章主要介绍了栈与队列两种数据结构以及他们的顺序存储与链式存储方式,并在此基础上介绍了一些基于栈与队列的应用。 本章要点 3.1 栈 3.1.1 栈的定义及运算3.1.2 栈的顺序存储结构及基本运算的实现 3.1.3 栈的链式存储结构及基本运算的实现 3.2 栈的应用 3.2.1 中缀表达式 3.2.2 中缀表达式转换为等价的后缀表达式 3.2.3 后缀表达式及求值 3.3 栈与递归 3.3.1 递归与递归程序的设计 3.3.2 递归程序的执行过程 3.3.3 递归的应用举例 3.4 队 列 3.4.1 队列的定义和运算 3.4.2 队列的顺序存储结构及基本运算的实现 3.4.3 队列的链式存储结构及基本运算的实现3.4.4 队列的应用举例 本章小结 3.1.1 栈的抽象数据类型 栈是限制在表的一端进行插入和删除的线性表。 栈的相关术语:栈顶、栈底、空栈、进栈、出栈等。 栈顶(top):允许插入和删除的一端 栈底(bottom):不允许插入和删除的一端 课堂练习 若进栈序列为3,5,7,9,进栈过程中可以出栈,则不可能的一个出栈次序是( )。 (a) 7,5,3,9 (b) 9,7,5,3 (c) 7,5,9,3 (d) 9,5,7,3 3.1.1 栈的运算 (1)初始化栈 InitStack(S) 初始条件:栈S不存在。 操作结果:构造一个空栈S。 (2)压栈(入栈) Push(S, e) 初始条件:栈S已存在。 操作结果:插入元素e为新的栈顶元素。 (3)出栈Pop(S, e) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素,并用e返回其值。 (4) GetTop(S, e) 初始条件:栈S已存在且非空。 操作结果:用e返回S的栈顶元素。 (5)StackEmpty(S) 初始条件:栈S已存在。 操作结果:若栈S为空栈,则返回TRUE(1),否则FALSE(0)。 本章要点 3.1 栈 3.1.1 栈的定义及运算3.1.2 栈的顺序存储结构及基本运算的实现 3.1.3 栈的链式存储结构及基本运算的实现 3.2 栈的应用 3.2.1 中缀表达式 3.2.2 中缀表达式转换为等价的后缀表达式 3.2.3 后缀表达式及求值 3.3 栈与递归 3.3.1 递归与递归程序的设计 3.3.2 递归程序的执行过程 3.3.3 递归的应用举例 3.4 队 列 3.4.1 队列的定义和运算 3.4.2 队列的顺序存储结构及基本运算的实现 3.4.3 队列的链式存储结构及基本运算的实现3.4.4 队列的应用举例 本章小结 3.1.2 顺序栈 用顺序存储(数组)的方式去存储栈,栈的顺序存储示意图: 课堂练习 顺序栈的描述 #define MAXSIZE 100 typedef struct{ ElemType data[MAXSIZE]; int top; }Stack; 3.1.2 顺序栈基本运算 2)压栈(入栈)操作 int PushStack(Stack *S,ElemType e) //进栈操作 { if(S-top==MAXSIZE-1) { prinft(“\n Stack is full”); return 0; } s-top++; s-data[s-top]=e; return 1; } 3) 出栈操作 int PopStack(Stack *S,ElemType *e) // { if(Empty(S)) { prinft(“\n Stack is empty”); return 0; } *e=S-data[s-top]; s-top--; return 1; } 4) 取栈顶元素操作 int GetTop (Stack *S,ElemType *x) //取栈顶元素操作 { if(Empty(S)) {printf(“Stack is Empty”); return 0;
您可能关注的文档
最近下载
- 语文阅读题答题技巧.pptx VIP
- 最新初三中考初中语文阅读理解训练题及答案带解析 .pdf VIP
- 杭州北游—皋亭山景区一期项目统筹规划大纲.pptx VIP
- 教科版二年级下册科学知识点期末测试卷附参考答案(突破训练).docx VIP
- 六年级语文阅读专项训练PDF打印.pdf VIP
- 最新教科版小学二年级科学下册第二单元提升精练检测试卷(含答案).docx VIP
- 电力建设“五新”推广应用信息目录.pdf VIP
- 2025年度组织生活会个人对照检查材料.doc VIP
- DL-T-1843-2018垃圾发电厂危险源辨识和评价规范.docx VIP
- 四年级脱式计算100道数学题.pdf VIP
原创力文档

文档评论(0)