《数据结构 Data Structure》课程教学资源(PPT课件讲稿)第三章 栈和队列

第三章栈和队列 栈 队列 线性结构 优先级队列 与表不同的是,它们都是限制 存取位置的线性结构
1 第三章 栈和队列 栈 队列 优先级队列 与表不同的是,它们都是限制 存取位置的线性结构 线性结构

§3.1栈( stack) ·只允许在一端插入和删除的线性表 ·允许插入和删除退栈 进栈 (弹出) (压入) 的一端称为栈顶 (ap),另一端称b-an 为栈底( bottom) n-2 特点 1 后进先出(LFO)bomn
§3.1 栈(stack) • 只允许在一端插入和删除的线性表 • 允许插入和删除 的一端称为栈顶 (top),另一端称 为栈底(bottom) • 特点 后进先出(LIFO) 2

栈的抽象数据类型 template class stack i p ublic. Stack( int=10) /构造函数 void push( const e&iem);/进栈 E Pop o; /出栈 e getTopo /取栈顶元素 void make Empt(;置空栈 int IsEmpty() const;/判栈空否 int sfu( const;/判栈满否
template class Stack { public: Stack ( int=10 ); //构造函数 void Push ( const E & item); //进栈 E Pop ( ); //出栈 E getTop ( ); //取栈顶元素 void makeEmpty ( ); //置空栈 int IsEmpty ( ) const; //判栈空否 int IsFull ( ) const; //判栈满否 } 栈的抽象数据类型 3

栈的数组表示一顺序栈 0123456789 maxSize-1 elements top(栈空) #include template class seqstack public stack t private: int top 栈顶指针 E *elements: 栈元素数组 int maxsize. 栈最大容量 void overflow Processo,∥栈的滋出处理
栈的数组表示 — 顺序栈 #include template class SeqStack : public Stack { private: int top; //栈顶指针 E *elements; //栈元素数组 int maxSize; //栈最大容量 void overflowProcess(); //栈的溢出处理 0 1 2 3 4 5 6 7 8 9 maxSize-1 top (栈空) elements 4

public Stack(int Sz=10 /构造函数 Stack (i delete [elements; void Push(e x 进栈 int Pop(& x) ∥/出栈 int getTop(E&x);∥取栈顶 void make Empty(){top=-1;}∥空栈 int Is Empty const return top ==-1; 3 int IsFull ( const freturn top=-maxSize-1; 5
public: Stack (int sz = 10); //构造函数 ~Stack ( ) { delete [ ] elements; } void Push (E x); //进栈 int Pop (E& x); //出栈 int getTop (E& x); //取栈顶 void makeEmpty ( ) { top = -1; } //置空栈 int IsEmpty ( ) const { return top == -1; } int IsFull ( ) const { return top == maxSize-1; } } 5

top-b top-a top→空栈 a进栈 b进栈 p top edcba edcba e进栈 f∫进栈滋出 进示例
top 空栈 top top top top a 进栈 b 进栈 a a b a b c d e e 进栈 a b c d e f 进栈溢出 进栈示例 6

top cba op dcba to p cba e退栈 d退栈 C退栈 top b退栈 0p一a退栈top→空栈 退栈示例
top c 退栈 b 退栈 a b a a 退栈 空栈 top a b d d 退栈 c top a b c top top top a b d e e 退栈 c 退栈示例7

顺序栈的操作 template void seqstackE>:: overflow Processo& 私有函数:当栈满则执行扩充栈存储空间处 理 e* newArray =new e[2* maxSize]; 创建更大的存储数组 for (int 1=0; i<=top; 1++) newArrayli]=elements[i maxSize + maxSize delete l elements; elements= newArray;∥1变 elements指针
8 顺序栈的操作 template void SeqStack::overflowProcess() { //私有函数:当栈满则执行扩充栈存储空间处 理 E *newArray = new E[2*maxSize]; //创建更大的存储数组 for (int i = 0; i <= top; i++) newArray[i] = elements[i]; maxSize += maxSize; delete [ ]elements; elements = newArray; //改变elements指针 };

template void Seqstack: Push(e x)t ∥若栈不满,则将元素ⅹ插入该栈栈顶,否则溢出处理 if (IsFullo==true)overflowProcesso /棧满 elements{++top]=x;∥栈顶指针先加1,再进栈 template bool Seq Stack :: Pop(E& x)i ∥/函数退出栈顶元素并返回栈顶元素的值 if(IsEmptyo-true)return falSe I X= elements[top--1;/栈顶指针 return true 退栈成功
9 template void SeqStack::Push(E x) { //若栈不满, 则将元素x插入该栈栈顶, 否则溢出处理 if (IsFull() == true) overflowProcess(); //栈满 elements[++top] = x; //栈顶指针先加1, 再进栈 }; template bool SeqStack::Pop(E& x) { //函数退出栈顶元素并返回栈顶元素的值 if (IsEmpty() == true) return false; x = elements[top--]; //栈顶指针退1 return true; //退栈成功 };

template bool Seqstack: get Top(e&x)t /若栈不空则函数返回该栈栈顶元素的地址 if (Is empty==true)return false; x=elements[top]; return true
10 template bool Seqstack::getTop(E& x) { //若栈不空则函数返回该栈栈顶元素的地址 if (IsEmpty() == true) return false; x = elements[top]; return true; };
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 四川大学:《操作系统 Operating System》课程教学资源(PPT课件讲稿)Chapter 2 Operating System Overview.ppt
- 河南中医药大学(河南中医学院):《网络技术实训》课程教学资源(PPT课件讲稿)第9讲 通过VPN访问企业网内部服务器设计讨论.pptx
- 《多媒体教学软件设计》课程教学资源(PPT课件讲稿)第3章 多媒体教学软件开发平台(Authorware).ppt
- 香港科技大学:Latent Tree Models Part III:Learning Algorithms.pptx
- 四川大学:Object-Oriented Design and Programming(Java,PPT课件)Advanced Class Design.ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第6章 总线结构.ppt
- 南京航空航天大学:《C++程序设计》课程教学资源(PPT课件)第1章 C++程序设计基础(主讲:陈哲).ppt
- 《Excel实用技术基础》课程教学资源(PPT课件讲稿)Excel 技术基础、数据管理.ppt
- 《计算机系统》课程教学资源(PPT课件讲稿)第六章 设备管理 Devices Management.ppt
- Introduction to XML IR(PPT讲稿).ppt
- 中国传媒大学(北京广播学院):《计算机网络》课程教学资源(PPT课件讲稿)第五章 网络层 The Network Layer.ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第六章 中断(主讲:刘忠国).ppt
- 《工程计算软件》课程教学资源(PPT课件讲稿)第四章 Maple简介.ppt
- 中国科学技术大学:QuickPass系统的排队问题(PPT讲座,谢瑶).ppt
- 中国科学技术大学:《网络信息安全 NETWORK SECURITY》课程教学资源(PPT课件讲稿)第十章 入侵检测系统(主讲:肖明军).ppt
- 东南大学:《数据结构》课程教学资源(PPT课件讲稿)第五章 树(主讲:方效林).ppt
- 西南民族大学:《软件需求分析与总体设计》课程教学资源(PPT课件讲稿)软件总体(概要)设计.ppt
- 北京航空航天大学:Graph Search - a New Paradigm for Social Computing.pptx
- 清华大学:《计算机网络》课程教学资源(PPT课件讲稿)Lecture 4 Routing.pptx
- Homomorphic Secret Sharing:Low-End HSS from OWF、HSS for Branching Programs from DDH、The HSS Construction.ppsx
- IS6000 – Seminar 8 Research Methods – Case Study – Action Research.pptx
- 《编译原理》课程教学资源(PPT课件讲稿)上下文无关文法——自顶向下分析.pptx
- 《计算机应用基础》课程教学资源(PPT讲稿)统考考前辅导.ppt
- Cassandra and Sigmod contest.pptx
- 上海交通大学:《数字图像处理 Digital Image Processing》课程教学资源(PPT课件讲稿,第三版)Chapter 9 Morphological Image Processing.pptx
- 南京航空航天大学:《模式识别》课程教学资源(PPT讲稿)Model Selection for SVM & Our intent works.ppt
- 中国科学技术大学:《微机原理》课程教学资源(PPT课件讲稿)第八章 中断系统.pptx
- 《单片机原理及应用》课程教学资源(PPT课件讲稿)第3章 MCS-51单片机的指令系统.pptx
- 合肥工业大学:《网络安全概论》课程教学资源(PPT课件讲稿)无线网络安全.ppt
- 《计算机辅助设计——CAD制图》课程标准.pdf
- 《Link Layer Computer Networking:A Top Down Approach》课程教学资源(PPT课件讲稿)Chapter 5 The Data Link Layer.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)Chapter 06 广域网技术.ppt
- 《电脑组装与维护实例教程》教学资源(PPT课件讲稿)第13章 计算机的保养.ppt
- 中国人民大学:A Survey on PIM(PPT讲稿).ppt
- 河南中医药大学(河南中医学院):《计算机网络》课程教学资源(PPT课件讲稿)第二章 物理层(阮晓龙).pptx
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第八章 密钥分配与密钥管理.pptx
- 《算法设计与分析》课程教学资源(PPT讲稿)第十五讲 NP完全性理论与近似算法.pptx
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿,共十二章,田丽华、岳俊华、孙颖馨).ppt
- 北京师范大学:《多媒体技术与网页制作》课程教学资源(PPT课件)数字音频技术.ppt
- 电子科技大学:《微机原理与接口技术》课程教学资源(PPT实验讲稿,习友宝).ppt