1 / 110
文档名称:

数据结构-栈和队列.ppt

格式:ppt   大小:615KB   页数:110页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构-栈和队列.ppt

上传人:文库新人 2018/10/1 文件大小:615 KB

下载得到文件列表

数据结构-栈和队列.ppt

相关文档

文档介绍

文档介绍:栈 抽象数据类型栈的定义 ⑴栈的定义
栈(stack),又称堆栈,是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。
根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。
也就是说,栈是一种后进先出(Last In First Out)的线性表,简称为LIFO表。
栈的插入操作被形象地称为进栈或入栈,删除操作称为出栈或退栈。
例:
入栈顺序:123
可能出栈顺序:123,132,213,231,321
不可能出栈顺序:312
⑵栈的抽象数据类型
ADT Stack is
Data:含有n个元素a1,a2,a3,…,an,按LIFO规则存放,每个元素的类型都为ElemType。
Operation:
//初始化栈s
void initStack(Stack& s);
//清除栈s的所有元素,使之成为空栈
void clearStack(Stack& s);
//判断栈s是否为空,若是则返回true,否则返回false
bool isEmpty(Stack& s);
//若栈已满则返回true,否则返回false,此操作为顺序栈所特有
bool isFull(Stack& s);
//返回栈顶元素,但不移动栈顶指针
ElemType peek(Stack& s);
//元素e进栈,即插入到栈顶
void push(Stack& s,const ElemType& e);
//删除栈顶元素并返回之
ElemType pop(Stack& s);
end Stack
栈的表示和实现 顺序栈--栈的顺序存储结构
和线性表类似,栈也有两种存储表示,其顺序存储结构简称为顺序栈。
顺序栈类型定义:
#include <iostream>
using namespace std;
const int MAXSIZE=50;
struct Elem{
int data;
};
typedef Elem ElemType;
struct SqStack{
ElemType base[MAXSIZE];
int top;
};
void initStack(SqStack& s);
void clearStack(SqStack& s);
bool isEmpty(SqStack& s);
bool isFull(SqStack& s);
ElemType peek(SqStack& s);
void push(SqStack& s,const ElemType& e);
ElemType pop(SqStack& s);
始终指向栈底
=NULL 表示栈结构不存在
=0 表示栈空
始终指向栈顶元素的下一个位置
顺序栈基本操作的实现:
#include ""
⑴初始化栈
void initStack(SqStack& s){
=0;
}
⑵清空栈
void clearStack(SqStack& s){
=0;
}
⑶判栈空
bool isEmpty(SqStack& s){
return ==0;
}
⑷判栈满
bool isFull(SqStack& s){
return ==MAXSIZE;
}
⑸读取栈顶元素
ElemType peek(SqStack& s){
if(==0){
cerr<<"Stack is empty!"<<endl;
exit(1);
}
return [-1];
}