第三章栈和列队资料.ppt

  1. 1、本文档共119页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
//初始化一个大小为m的双向栈s Status Init_Stack(DblStack s,int m) { s.V=new SElemType[m]; s.bot[0]=-1; s.bot[1]=m; s.top[0]=-1; s.top[1]=m; return OK; } 答案 //判栈i空否, 空返回1, 否则返回0 int IsEmpty(DblStack s,int i) {return s.top[i] == s.bot[i]; } //判栈满否, 满返回1, 否则返回0 int IsFull(DblStack s) { if(s.top[0]+1==s.top[1]) return 1; else return 0;} 答案 void Dblpush(DblStack s,SElemType x,int i) { if( IsFull (s ) ) exit(1); // 栈满则停止执行 if ( i == 0 ) s.V[ ++s.top[0] ] = x; //栈0情形:栈顶指针先加1, 然后按此地址进栈 else s.V[--s.top[1]]=x; //栈1情形:栈顶指针先减1, 然后按此地址进栈 } 答案 int Dblpop(DblStack s,int i,SElemType x) {if ( IsEmpty ( s,i ) ) return 0; //判栈空否, 若栈空则函数返回0 if ( i == 0 ) s.top[0]--; //栈0情形:栈顶指针减1 else s.top[1]++; //栈1情形:栈顶指针加1 return 1; } 答案 (2)已知f为单链表的表头指针, 链表中存储的都是整型数据,试写出实现下列运算的递归算法: ① 求链表中的最大整数; ② 求链表的结点个数; ③ 求所有整数的平均值。 算法设计题 void main( ){ LinkList L; CreatList(L); cout链表中的最大整数为:GetMax(L-next)endl; ……} int GetMax(LinkList p){//求链表中的最大整数 if(!p-next) return p-data; else { int max=GetMax(p-next); return p-data=max ? p-data:max; } } 提示 * * * * * * * Status GetHead (LinkQueue Q, QElemType e){ if(Q.front==Q.rear) return ERROR; e=Q.front-next-data; return OK; } 求链队列的队头元素 Status EnQueue(LinkQueue Q,QElemType e){ p=(QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return OK; } 链队列入队 p Status DeQueue (LinkQueue Q,QElemType e){ if(Q.front==Q.rear) return ERROR; p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear==p) Q.rear=Q.front; delete p; return OK; } 链队列出队 p 3.6 案例分析与实现 案例3.1 :数制的转换 【算法步骤】 ① 初始化一个空栈S。 ② 当十进制数N非零时,循环执行以下操作: 把N与8求余得到的八进制数压入栈S; N更新为N与8的商。 ③ 当栈S非空时,循环执行以下操作: 弹出栈顶元素e; 输出e。 【算法描述】 void conversion(int N) {//对于任意一个非负十进制数,打印输出与其等值的八进制数 InitStack(S); //初始化空栈S while(N) //当N非零时,循环 { Push(S,N%8); //把N与8求余得到的八进制数压入栈S N=N/8; //N更新为N与8的商 } while(!StackEmpty(S))//当栈S非空时,循环 { Pop(S,e); //弹出栈顶元素e co

文档评论(0)

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

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

1亿VIP精品文档

相关文档