- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 栈和队列 知识教学目标 栈的定义和基本运算 栈的顺序存储和链式存储 队列的定义和基本运算 队列的顺序存储和链式存储 能力培养目标 顺序栈和链栈的进栈、退栈运算 共享栈的概念和运算 顺序队列和链队的进队、出队运算 循环队列的概念和运算 栈和队列的应用 3.1.1 栈的定义与基本运算 栈(stack)是一种只能在一端进行插入或删除操作的线性表。通常称允许进行插入和删除运算的这一端为栈顶(Top),而表的另一端为栈底(Bottom)。当栈中没有结点时,称之为空栈。 栈的基本运算有以下六种: 1) 初始化栈InitStack(S) 2) 判栈空StackEmpty(S) 3) 判栈满StackFull(S) 4) 进栈Push(S,x) 5) 出栈Pop(S) 6) 取栈顶结点GetTop(S) 3.1.2 顺序栈 栈的顺序存储结构简称为顺序栈,它实际上是利用一组地址连续的存储单元依次存放从栈底到栈顶的结点,同时附设一变量top来指示栈顶结点在栈中的位置。 顺序栈的类型定义如下: #define Max 100 //假设预分配的栈空间最多为100个结点 typedef int DataType; //假设栈结点的数据类型为整型 typedef struct { DataType data[Max]; int top; }SeqStack; 【算法3.1】 初始化栈。 void InitStack(SeqStack *S) { S-top=-1; } 【算法3.2】 判栈空。 int StackEmpty(SeqStack *S) { //判断S所指向的栈是否为空栈,当S所指的栈为空栈时,返回1,否则返回0。 return S-top == -1; } 【算法3.3】 判栈满。 int StackFull(SeqStack *S) { //判断S所指向的栈是否为满栈,当S所指的栈为满栈时,返回1,否则返回0。 return S-top == Max-1; } 【算法3.4】 进栈。 void Push(SeqStack *S,DataType x) { if (StackFull(S)) //若顺序栈S已满,则上溢 printf(“Stack Overflow”); else { S-top++; //栈顶指针加1 S-data[S-top]=x; //元素x进栈 } } 【算法3.5】 出栈。 DataType Pop(SeqStack *S) { if (StackEmpty(S)) { printf(“Stack Underflow”); //若顺序栈S为空,则下溢 return NULL; //退出运行 } else return S-data[S-top--]; //返回原来的栈顶元素 } 【算法3.6】 取栈顶结点。 DataType GetTop(SeqStack *S) { if (StackEmpty(S)) { printf(“Stack is empty”); //若顺序栈S为空,则取栈顶元素运算非法 return NULL; } else return S-data[S-top]; //返回栈顶元素 } 共享栈 #define MaxSize 200 //假设两个栈的共享空间最多容纳200个元素 typedef int DataType; //假设栈结点的数据类型为整型 typedef struct { DataType data[MaxSize]; int top1; //栈1的栈顶元素指针 int top2; //栈2的栈顶元素指针 }DSeqStack; 【算法3.7】 置空栈。 void InitDStack(SeqStack *S,int i) { //将共享栈置为空栈,i表示栈号 if(i == 1) S-top1=-1; //栈S1置为空栈 else S-top2= MaxSize; //栈S2置为空栈 } 【算法3.8】 判栈满。 int DStackFull(DSeqStack *S) { //判断共享栈是否为满栈,若为满栈时,返回1,否则返回0。 if (S-top1 + 1 == S-top2) return 1;
您可能关注的文档
- 新旅游景区管理 教学课件 章 平 李晓光 主编 第9章 旅游景区环境管理.ppt
- 新旅游景区管理 教学课件 章 平 李晓光 主编 第10章 旅游景区解说管理.ppt
- 新旅游景区管理 教学课件 章 平 李晓光 主编 第11章 旅游景区解说管理.ppt
- 新旅游景区管理 教学课件 章 平 李晓光 主编 第12章 旅游景区危机管理.ppt
- 新旅游景区管理 教学课件 章 平 李晓光 主编 附录.ppt
- 新旅游商贸实用礼仪 教学课件 盛霞 主编 第二章.ppt
- 新旅游商贸实用礼仪 教学课件 盛霞 主编 第六章.ppt
- 新旅游商贸实用礼仪 教学课件 盛霞 主编 第七章.ppt
- 新旅游商贸实用礼仪 教学课件 盛霞 主编 第四章.ppt
- 新旅游商贸实用礼仪 教学课件 盛霞 主编 第五章.ppt
- 新数据结构(第二版) 教学课件 郑泳 方风波 第四章 串.ppt
- 新数据结构(第二版) 教学课件 郑泳 方风波 第一章 概论.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第八章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第二章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第九章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第六章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第七章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第三章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第四章.ppt
- 新数据结构——C++实现 教学课件 缪淮扣 顾训穰 沈俊 数据结构 第五章.ppt
原创力文档


文档评论(0)