网站大量收购独家精品文档,联系QQ:2885784924

Ch03栈与队列3.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 栈与队列 3.1 栈 Stack 栈可定义为只允许在表的末端进行插入和删除的线性表。 允许插入和删除 的一端称为栈顶 top ,另一端称 为栈底 bottom 特点 先进后出 FILO 栈的抽象数据类型 二、顺序栈 栈的其他成员函数的实现 template void SeqStack ::overflowProcess //私有函数:当栈满则执行扩充栈存储空间处理 T *newArray new T[maxSize+stackIncreament]; //创建更大的存储数组 if newArray NULL cerr “存储分配失败!” endl; exit 1 ; for int i 0; i top; i++ newArray[i] elements[i]; maxSize maxSize+stackIncreament; delete []elements; elements newArray; //改变elements指针 ; template void SeqStack ::Push const T x if overflowProcess; //栈满 elements[++top] x; //栈顶指针先加1, 再进栈 ; template bool SeqStack ::Pop T x if IsEmpty true return false; x elements[top--]; //取当前元素值,栈顶指针退1 return true; //退栈成功 ; template bool Seqstack ::getTop T x //若栈不空则函数返回该栈栈顶元素的地址 if IsEmpty true return false; x elements[top]; return true; ; 三、栈的链接存储表示 — 链式栈 链式栈的栈顶在链头; 插入与删除仅在栈顶处执行; 链式栈无栈满问题,空间可扩充; 1.链式栈 LinkedStack 类的定义 template class LinkedStack //链式栈类定义 private: LinkNode *top; //栈顶指针 public: LinkedStack top NULL; //构造函数 ~LinkedStack makeEmpty ; //析构函数 void Push const T x ; //进栈 bool Pop T x ; //退栈 bool getTop T x const; //取栈顶 bool IsEmpty const return top NULL ? True:false; int getSize const; void makeEmpty ; //清空栈的内容 ; 2. 链式栈类操作的实现 template LinkedStack ::makeEmpty //逐次删去链式栈中的元素直至栈顶指针为空。 LinkNode *p; while top ! NULL //逐个结点释放 p top; top top- link; delete p; ; template void LinkedStack ::Push const T x top new LinkNode x, top ; //创建新结点 assert top ! NULL ; //创建失败退出 ; template bool LinkedStack ::getTop T x const if IsEmpty true return false; //栈空返回 x top- data; //返回栈顶元素的值 return true; ; * * * * * * * * template class LinkedQueue private: LinkNode *front, *rear; //队头、队尾指针 public: LinkedQueue :rear NULL , front NULL ~LinkedQueue ; bool EnQueue T x ; bool DeQueue T x ; bool GetFront T x ; void MakeEmpty ; //实现与~LinkedQueue 同 bool IsEmpty const return front NULL; int getSize co

文档评论(0)

taotao0b + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档