第4章 节  栈和队列数据结构课件.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 节  栈和队列数据结构课件.ppt

1.栈 2.栈的应用--表达式计算 3.队列 4.队列的应用举例--打印二项展开式的系数 5.优先级队列(Priority Queue);1.栈(stack);2) 栈的类定义(抽象数据类型);3)顺序栈--栈的顺序存储表示;顺序栈的类说明为: ;取栈顶元素 template class Type Type StackType::GetTop() { assert(!IsEmpty( )); return elements[top]; } 对于要开辟两个栈,为了避免栈有时太大,有时太小. 0 maxsize-1 栈1的底 top1 top2 栈2的底      只有当top1=top2时才溢出. ;4) 链式栈;template class Type class Stack { public: Stack( ): top(NULL){ } ~Stack( ); void Push(const Type item); Type Pop( ); Type GetTop( ); void MakeEmpty( ); //实现同~Stack( ) int IsEmpty( ) const{return top==NULL;} private: StackNodeType *top; //栈顶指针 };;析构函数 一个结点一个结点地删除,直至top==NULL. template class Type void StackType::~Stack( ) { StackNode Type *p; while(top!=NULL) {p=top; top=top-link; delete p;} }   ; push操作(进栈操作) 将新元素插入到链式栈的栈顶 ; pop操作(删除栈顶结点,返回被删栈顶元素的值) ;2.栈的应用--表达式的计算;2) 后缀表达式求值;3)中缀表达式转换为后缀表达式; 如上例:A+B*C@-->ABC*+@ ;  栈内优先级(in stack priority)--ISP   栈外优先级(in coming priority)--ICP   对其它运算符进栈后优先级都加1,这是为了保证相同优先级的运算符自左向右计算的要求.                     例如:a+b+c@-->ab+c+@;遇‘)’:依次输出栈顶直至匹配的‘(’为止.‘(’不输出, 但要退栈. 遇@(或其它结束符时):依次输出栈顶,直至‘#’为 止.‘#’不输出,但要退栈.;3 .队列(queue);3) 循环队列--队列的顺序存储表示(Circular Queue)   队列也有两种存储方式:顺序方式、链接方式。 顺序方式: ; 队列在插入、删除过程中会发生: ;环:把element数组看成是一个逻辑环,即:  队头指针进1:front = (front + 1) % maxsize 队尾指针进1:rear = (rear + 1) % maxsize 但这时有一个新问题: 这时如何区分队满与队空?   ;下面是循环队列的类声明以及成员函数的声明: #include assert.h template class Type class Queue { public: Queue (int=10); ~Queue( ) {delete [] elements;} void EnQueue( const Type item); Type DeQueue ( ); Type GetFront( ); void MakeEmpty ( ) {front=rear=0;} int IsEmpty( ) const {return front==rear;} int IsFull( ) const {return (rear+1) % m

文档评论(0)

yuzongxu123 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档