- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]栈和队列
第四章 栈和队列 栈和队列都是操作受限的线性表,应用十分广泛。 4.1 栈(Stack) 定义:栈是限制插入和删除操作只能在某一端进行的线性表,并按先进后出( F I L O )或后进先出(LIFO)的原则进行操作 入栈顺序: e0 e1 e2 … en-2 en-1 出栈顺序: en-1 en-2 … e2 e1 e0 栈可以对序列实现求逆 栈的基本操作: (参见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;} 栈的封闭性及其抽象数据类型: 在一个栈中,出入口处称为栈顶,栈内最深处称为栈底。除了栈顶元素外,其他元素不会被改变,因而栈的封闭性非常好,使用起来非常安全。另外,在下面的栈的类定义中,体现了栈的抽象数据类型,在此定义中,所有栈的成员函数都是共有的,其他类的成员函数都可以使用这些函数,但是,栈的存储表示和成员函数的实现对其他类的成员来说都是隐蔽的。 4.1.1 顺序栈--在顺序存储结构上实现的栈 # include assert.h //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;//顺序栈的最大容量 } 顺序栈的基本操作(算法) (1)顺序栈初始化算法(构造函数) template class Type StackType::Stack(int s):top(-1),maxSize(s) //建立一个最大尺寸为 s 的空栈,若分配不成功则错误处理 { element=new Type[maxSize];//创建顺序栈空间(数组) assert( elements != 0); //断言语句:若条件成立,则继续;否则出错处理并终止执行 } (2)顺序栈入栈算法 template class Type void StackType::Push(const Type item) //若栈不满,则将元素 item 插入到栈顶,否则出错处理 { assert( ! IsFull());//断言:栈不满则继续执行 elements[++top]=item;//栈顶指针先加 1 ,然后按此地址进栈 } (3)顺序栈出栈算法 template class Type Type StackType::Pop() //若栈不空,则返回栈顶元素,并使栈顶指针退 1 ;否则出错处理 { assert( ! IsEmpty());//
您可能关注的文档
最近下载
- 高职“岗、课、赛、证、训、创”六位一体人才培养模式研究——以人工智能应用技术专业为例.pdf
- 永辉超市营运资金管理存在的问题及对策分析_20250126_225505.docx VIP
- 第四章 多彩的光之凸透镜专题(课件)中考物理一轮复习(沪科版).pptx VIP
- 经皮内镜下胃(空肠)造口术临床应用中国专家共识(2024版).docx VIP
- 机械制图 全套课件.ppt
- 民航旅客服务从业人员劳动竞赛试题库400题(供参考).docx
- 《TM-261A、461A使用说明书》.pdf
- 工业园物业服务工业园安全秩序管理方案.doc
- 2024年计量专业实务与案例分析二级参考答案.docx
- 《学前教育法》知识考试题库100题(含答案).docx
文档评论(0)