1 / 33
文档名称:

栈和队列.ppt

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

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

分享

预览

栈和队列.ppt

上传人:gyzhluyin 2016/4/21 文件大小:0 KB

下载得到文件列表

栈和队列.ppt

文档介绍

文档介绍:n n栈栈( Stack ) ( Stack ) n n队列队列( Queue ) ( Queue ) n n小结小结栈栈( Stack ) ( Stack ) n n只允许在一端插入和删除的顺序表只允许在一端插入和删除的顺序表 n n允许插入和删除允许插入和删除的一端称为的一端称为栈顶栈顶( ( top top ) ), ,另一端称另一端称为为栈底栈底( ( bottom bottom ) ) n n特点特点后进先出后进先出( ( LIFO LIFO ) ) template <class Type> class Stack { public: Stack ( int =10 ) ; //构造函数 void Push ( const Type & item ) ; //进栈 Type Pop ( ) ; //出栈 Type GetTop ( ) ; //取栈顶元素 void MakeEmpty ( ) ; //置空栈 int IsEmpty ( ) const; //判栈空否 int IsFull ( ) const; //判栈满否} 栈的抽象数据类型栈的抽象数据类型# include <> template <class Type> class Stack { public: Stack ( int =10 ) ; //构造函数~ Stack ( ) { delete [ ] elements ; } //析构函数 void Push ( const Type & item ) ; //进栈 Type Pop ( ) ; //出栈 Type GetTop ( ) ; //取栈顶 void MakeEmpty ( ) { top = -1; } //置空栈 int IsEmpty ( ) const { return top == -1;} 栈的数组表示栈的数组表示——顺序栈顺序栈 int IsFull ( ) const { return top == maxSize -1;} private: int top ; //栈顶数组指针 Type * elements ; //栈数组 int maxSize ; //栈最大容量} template <class Type> Stack <Type>:: Stack ( int s ): top (-1), maxSize (s ) { elements = new Type [ maxSize ]; assert ( elements != 0 ) ; //断言} 进栈示例进栈示例退栈示例退栈示例 template <class Type> void Stack <Type>:: Push ( const Type & item ) { assert (! IsFull ( ) ) ; //先决条件断言 elements [ ++top ] = item ; //加入新元素} template <class Type> Type Stack <Type>:: Pop ( ) { assert (! IsEmpty ( ) ) ; //先决条件断言 return elements [ top-- ] ; //退出栈顶元素} template <class Type> Type stack <Type>:: GetTop ( ) { assert (! IsEmpty ( ) ) ; //先决条件断言 return elements [ top ] ; //取出栈顶元素}双栈共享一个栈空间双栈共享一个栈空间栈的链接表示栈的链接表示——链式栈链式栈 n n链式栈无栈满问题,空间可链式栈无栈满问题,空间可扩充扩充 n n插入与删除仅在栈顶处执行插入与删除仅在栈顶处执行 n n链式栈的栈顶在链头链式栈的栈顶在链头 n n适合于多栈操作适合于多栈操作