- 1、本文档共67页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- OMRON__CJ系列PLC资料.ppt
- 《煤矿安全规程》解读2012年版.ppt
- 32政府的责任:对人民负责_上课.ppt
- 34_小蝌蚪找妈妈cj.ppt
- 24菌种生产接种与培养.ppt
- Module_4_My_family全模块课件(外研版七上).ppt
- (简介)线性、对偶规划.ppt
- 24我国的虫灾与鼠害.ppt
- D8_3复合求导.ppt
- GJB9001A质量管理体系标准培训课件王克强.ppt
- DB3407_T 014-2023 市场监督管理所标准体系 构成和要求.docx
- DB3609_T 01-2024 燃油加油机计量监督检查规程.docx
- DB3406_T 010-2022 运输企业违法行为智能取证技术规范.docx
- DB36_T 1611-2022 红色旅游服务示范景区评定规范.docx
- DB36_T 1413.1-2021 中小学研学旅行 第1部分:基地(营地)认定规范.docx
- DB36_T 1412-2021 游乐园(场)大型游乐设施服务规范.docx
- 《GB/T 37133-2025电动汽车用高压连接系统》.pdf
- GB/T 37133-2025电动汽车用高压连接系统.pdf
- 中国国家标准 GB/T 37133-2025电动汽车用高压连接系统.pdf
- DB3403_T 04-2020 胶轮有轨电车交通系统施工及验收规范.docx
文档评论(0)