第三章 计算机软件技术基础课件.ppt

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 栈与队列 数据结构电子教案 第三章 栈与队列 栈 队列 栈的应用:表达式求值 栈的应用:递归 队列的应用 栈 ( Stack ) 只允许在一端插入和删除的线性表 允许插入和删除 的一端称为栈顶 (top),另一端称 为栈底(bottom) 特点 后进先出 (LIFO) 栈的数组存储表示 — 顺序栈 PROCEDURE PUSH(S,m,top,x) //若栈不满, 则将元素x插入该栈栈顶, 否则溢出处理 if (top=m) then {Stack overflow;RUTURN} //栈满 top=top+1; //栈顶指针先加1, 再进栈 S(top)=x; RETURN PROCEDURE POP(S,m,top,y) //退出栈顶元素并返回栈顶元素的值 if (top=0) then {Stack underflow;RETURN} y=S(top); top=top-1;//栈顶指针退1 return true; //退栈成功 }; PROCEDURE TOP(S,m,top,y)//若栈不空则返回该栈栈顶元素的地址 if (top=0) then {“Stack empty”;RETURN} y=S(top); return ; 栈的链接存储表示 — 链式栈 链式栈无栈满问题,空间可扩充 插入与删除仅在栈顶处执行 链式栈的栈顶在链头 适合于多栈操作 链式栈类操作的实现 template class E LinkedStackE::makeEmpty () { //逐次删去链式栈中的元素直至栈顶指针为空。 StackNodeE *p; while (top != NULL) //逐个结点释放 { p = top; top = top-link; delete p; } }; template class E void LinkedStackE::Push(E x) { //将元素值x插入到链式栈的栈顶,即链头。 top = new StackNodeE (x, top); //创建新结点 assert (top != NULL); //创建失败退出 }; template class E bool LinkedStackE::Pop(E x) { //删除栈顶结点, 返回被删栈顶元素的值。 if ( IsEmpty() == true ) return false; //栈空返回 StackNodeE *p = top; //暂存栈顶元素 top = top-link; //退栈顶指针 x = p-data; delete p; //释放结点 return true; }; template class E bool LinkedStackE::getTop(E x) const { if ( IsEmpty() == true ) return false; //栈空返回 x = top-data; //返回栈顶元素的值 return true; }; template class E void LinkedStackE::output(ostream os, StackNodeE *ptr, int i) { //递归输出栈中所有元素(沿链逆向输出) if (ptr != NULL) { if ( ptr-link != NULL ) output(os, ptr-link, i++ ); os i “ : ” p-data endl; //逐个输出栈中元素的值 } }; 队列 ( Queue ) 定义 队列是只允许在一端删除,在另一端插入的线性表 允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。 特性 先进先出(FIFO, First In First Out) 队列的进队和出队原则 进队时先将新元素按 rear 指示位置加入,再将队尾指针加一 rear = rear + 1。 队尾指针指示实际队尾的后一位置。 出队时按队头指针指示位置取出元素,再将队头指针进一 front = front + 1, 队头指针指示实际队头位置。 队满时再进队将溢出出错(假溢出) ; 队空时再出队将队空处理。 解决假溢出的办法之一:将队列

文档评论(0)

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

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

1亿VIP精品文档

相关文档