1 / 66
文档名称:

栈和队列.ppt

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

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

分享

预览

栈和队列.ppt

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

栈和队列.ppt

文档介绍

文档介绍:第四章栈和队列
栈和队列都是操作受限的线性表,应用十分广泛。
栈(Stack)
定义:栈是限制插入和删除操作只能在某一端进行的线性表,并按先进后出( F I L O )或后进先出(LIFO)的原则进行操作
入栈顺序:
e0 e1 e2 … en-2 en-1
出栈顺序:
en-1 en-2 … e2 e1 e0
栈可以对序列实现求逆
en-1
e0
e1
en-2

进栈(Push) 出栈(Pop)
栈顶 top
栈底
11/10/2017
1
栈的基本操作: (参见P104)
(1)栈初始化 Stack ( int = 10 );//构造函数
(2)进栈 Push void Push( const Type & item );
(3)出栈 Pop Type Pop( );
(4)判栈空 IsEmpty int IsEmpty( ) { return top==-1;}
(5)读取栈顶元素 GetTop Type GetTop ( );
(6)置空栈 MakeEmpty void MakeEmpty( ) { top=-1;}
(7)判栈满 IsFull int IsFull( ) const { return top==maxSize;}
栈的封闭性及其抽象数据类型:
在一个栈中,出入口处称为栈顶,栈内最深处称为栈底。除了栈顶元素外,其他元素不会被改变,因而栈的封闭性非常好,使用起来非常安全。另外,在下面的栈的类定义中,体现了栈的抽象数据类型,在此定义中,所有栈的成员函数都是共有的,其他类的成员函数都可以使用这些函数,但是,栈的存储表示和成员函数的实现对其他类的成员来说都是隐蔽的。
11/10/2017
2
顺序栈--在顺序存储结构上实现的栈
# include < > //C++断言功能
template <class Type > class Stack //顺序栈的类定义
{ public:
Stack ( int=10 );//栈初始化,建立一个空栈,缺省大小为10
~Stack ( ) { delete [ ] elements ; }
void Push ( const Type & item ); //将数据元素 item 入栈
Type Pop ( ) ; //将栈顶元素出栈
Type GetTop ( ) ; //读取栈顶元素
void MakeEmpty ( ) { top=-1;} //置空栈,top=-1表示栈为空
int IsEmpty ( ) const { return top==-1;} //判栈空
int IsFull ( ) const { return top==maxSize-1;} //判栈满
private: //top=maxSize-1表示栈已满
int top;//栈顶指针(栈顶元素下标)
Type * elements;//存储顺序栈的数组
int maxSize;//顺序栈的最大容量
}
11/10/2017
3
顺序栈的基本操作(算法)
(1)顺序栈初始化算法(构造函数)
template <class Type> Stack<Type>::Stack(int s):top(-1),maxSize(s)
//建立一个最大尺寸为 s 的空栈,若分配不成功则错误处理
{
element=new Type[maxSize];//创建顺序栈空间(数组)
assert( elements != 0);
//断言语句:若条件成立,则继续;否则出错处理并终止执行
}
(2)顺序栈入栈算法
template <class Type> void Stack<Type>::Push(const Type & item)
//若栈不满,则将元素 item 插入到栈顶,否则出错处理
{
assert( ! IsFull());//断言:栈不满则继续执行
elements[++top]=item;//栈顶指针先加 1 ,然后按此地址进栈
}
11/10/2017
4
(3)顺序栈出栈算法
template <class Type> Type Stack<Type>::Pop()
//若栈不空,则返回栈顶元素,并使栈顶指针退 1 ;否则出错处理
{
assert( ! IsEmpty());//断言:若栈不空,则继续执行
return elements[top--];//返回栈顶元素,并使栈顶指针退 1
}
(4)读取顺序栈栈顶元素算法
Template <class Type> Type Stack<Type>::GetTop()
//若栈不空,则返回

最近更新

2025上海中医药大学附属岳阳中西医结合医院病.. 34页

2025中国中煤能源集团有限公司南方分公司电力.. 33页

2026年刑事诉讼原理与实务模拟题100道及参考答.. 48页

2026年刑事诉讼原理与实务模拟题100道(夺冠系.. 47页

2025内蒙古自治区公务员考试常识判断专项练习.. 26页

2025南昌县向塘实验学校招聘中学教师3人考试题.. 43页

2026年南京特殊教育师范学院单招职业倾向性测.. 44页

2026年南昌应用技术师范学院单招职业适应性考.. 44页

2025山西运城新绛县司法协理员招聘12人历年题.. 35页

2025年企业人力资源管理师考试题库500道含答案.. 183页

2026年各工种岗位作业安全考核试题含答案(a卷.. 40页

2025年吉林科技职业技术学院单招职业适应性测.. 44页

2025年大连市公开招募高校毕业生基层服务岗位.. 36页

2025年平顶山工业职业技术学院单招职业倾向性.. 45页

2026年四川汽车职业技术学院单招职业适应性考.. 45页

2026年国开法律专题形考作业4考试题库及完整答.. 45页

2025年河南经贸职业学院单招职业适应性测试题.. 44页

2025年清水县幼儿园教师招教考试备考题库含答.. 30页

2026年国税廉政知识测试题(全国通用) 14页

2026年地方病控制题库及完整答案1套 40页

2026年大学c语言考试题库(夺分金卷) 13页

2025年陕西邮电职业技术学院马克思主义基本原.. 13页

2026年天津城市职业学院单招职业适应性测试模.. 42页

2025广东广州银行人才招聘备考题库必考题 52页

2025广东清远市公安局招聘警务辅助人员200人(.. 46页

2026年宁波财经学院单招职业倾向性考试模拟测.. 45页

2026年安徽广播影视职业技术学院单招职业技能.. 44页

2025新疆投资发展(集团)有限责任公司第三批.. 37页

2026年安徽财贸职业学院单招职业技能测试模拟.. 44页

2025江西省建工集团有限责任公司所属企业招聘.. 48页