983-数据结构.ppt

983-数据结构

数据结构 第3章 栈和队列 第3章 栈和队列 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列 3.5 离散事件模拟 第3章 栈和队列 栈和队列都是限制存取点的线性表。 3.1 栈 3.1 栈 3.2 栈的应用举例 3.3 栈与递归的实现 3.4 队列 3.5 离散事件模拟 3.1 栈 栈(Stack) 后进先出LIFO: Last In, First Out. 限制插入和删除操作只能在一端进行的线性表。 Notation: 插入: PUSH,称为入栈 删除: POP,称为出栈 可访问元素称为栈顶元素 TOP. 3.1 栈的类型定义 ADT Stack { 数据对象: D={ ai | ai ∈ElemSet, i=1,2,...,n, n≥0 } 数据关系: R1={ ai-1, ai | ai-1, ai∈D, i=2,...,n } 约定an 端为栈顶,a1 端为栈底。 基本操作:…… } ADT Stack 3.1 栈的类型定义 基本操作:…… InitStack(S) 操作结果:构造一个空栈 S。 DestroyStack(S) 初始条件:栈 S 已存在。 操作结果:栈 S 被销毁。 3.1 栈的类型定义 基本操作:…… StackEmpty(S) 初始条件:栈 S 已存在。 操作结果:若栈 S 为空栈,则返回 TRUE,否则 FALSE。 3.1 栈的类型定义 基本操作:…… StackLength(S) 初始条件:栈 S 已存在。 操作结果:返回 S 的元素个数,即栈的长度。 3.1 栈的类型定义 基本操作:…… GetTop(S, e) 初始条件:栈 S 已存在且非空。 操作结果:用 e 返回 S 的栈顶元素。 3.1 栈的类型定义 基本操作:…… ClearStack(S) 初始条件:栈 S 已存在。 操作结果:将 S 清为空栈。 3.1 栈的类型定义 基本操作:…… Push(S, e) 初始条件:栈 S 已存在。 操作结果:插入元素 e 为新的栈顶元素。 3.1 栈的类型定义 基本操作:…… Pop(S, e) 初始条件:栈 S 已存在且非空。 操作结果:删除 S 的栈顶元素,并用 e 返回其值。 3.1 栈的类型定义 基本操作:…… InitStack(S) DestroyStack(S) StackLength(S) StackEmpty(s) GetTop(S, e) ClearStack(S) Push(S, e) Pop(S, e) StackTraverse(S, visit()) 3.1 栈的类型定义 C++ STL Container 头文件 #include stack STL中的栈是一个模板类, template class T, class Container = dequeT class stack; 其中: * T: Type of the elements. * Container: Type of the underlying container object used to store and access the elements. 3.1 栈的类型定义 C++ STL Container 常用成员函数: (constructor) Construct stack (public member function) empty Test whether container is empty (public member function) size Return size (public member function) top Access next element (public member function) push Add element (public member function) Pop Remove element (public member function) 3.1 栈的类型定义 栈的实现: 顺序栈 链栈 3.1 栈的类型定义 栈的实现: 顺序栈 // Array-based stack implementation int size; // Maximum size of stack int top; // Index for top element Elem *listArray; // Array holding elements 问题: 那一端适宜作为栈顶top? 栈顶 “top” 具体应该指向哪个值(栈中的值还是栈外的值)? 操

文档评论(0)

1亿VIP精品文档

相关文档