算法与数据结构(C++语言版)(冯广慧第2版)习题及答案 第3章课后习题答案.docx

算法与数据结构(C++语言版)(冯广慧第2版)习题及答案 第3章课后习题答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 5 习题答案 一、选择题 1-5 B、B、D、B、B 6-10 B、A、D、BD、C、 二、填空题 1、先进后出,先进先出 2、23.12.3*2-4/34.5*7/++108.9/+ 3、假溢出 4、rear=(rear+1)%n s=new Lnode(x); s-next=r-next;r-next=s;r=s 5、O(1),O(n),O(1),O(1) 三、判断题 对错对对对 四、应用题 三个:CDEBA,CDBEA,CDBAE 435612不可以321, 325641可以, 154623不可以 432, 135426可以 Rear=4和front=2 队列为满的条件:(rear + 1) % MaxSize == front 队列为空的条件: front == rear 5、(1)A*B*C (2)(A+B)*C-D (3)A*B+C/(D-E) (4)(A+B)*D+E/(F+A*D)+C (1)ABC** (2)AB+C*D- (3)AB*CDE-/+ (4)AB+D*EFAD*+/C+ 五、算法设计题 1、 #define maxsize 100 //两栈共享顺序存储空间所能达到的最多元素数 #define ElemType int ∥假设元素类型为整型 typedef struct { ElemType stack[maxsize];∥栈空间 int top[2]; ∥top为两个栈顶指针 }stk; stk s; ∥s是如上定义的结构类型变量, //为全局变量 入栈操作: int push(int i,int x) ∥入栈。i=0表示左栈s1,i=1表示右栈s2,x是入栈元素。入栈成功返回1,否则返回0 { if(i0||i1){printf(“栈号输入不对\n”);exit(0);} if(s.top[1]-s.top[0]==1) {printf(“栈已满\n”);return(0);} switch(i) { case 0: s.stack[++s.top[0]]=x; return(1); break; case 1: s.stack[--s.top[1]]=x; return(1); } }∥push 退栈操作: ElemType pop(int i) ∥退栈算法。i=0时为s1栈,i=1时为s2栈。退栈成功返回退栈元素,否则返回-1 { if(i0 || i1){printf(“栈号输入错误\n”);exit(0);} switch(i) { case 0: if(s.top[0]==-1) {printf(“栈空\n”);return(-1);} else return(s.stack[s.top[0]--]); case 1: if(s.top[1]==maxsize){printf(“栈空\n”); return(-1);} else return(s.stack[s.top[1]++]); }∥switch }∥算法结束 判断栈空 int Empty(); { return (S.top[0]==-1 S.top[1]==m); } 2、 (1) 初始化 SeQueue QueueInit(SeQueue Q) {//初始化队列 Q.front=Q.rear=0; Q.tag=0; return Q; } (2)入队 SeQueue QueueIn(SeQueue Q,int e) {//入队列 if((Q.tag==1) (Q.rear==Q.front)) printf(队列已满\n); ?? else { Q.rear=(Q.rear+1) % m; Q.data[Q.rear]=e; if(Q.tag==0) Q.tag=1; //队列已不空 } return Q; } (3)出队 ElemType QueueOut(SeQueue Q) {//出队列 if(Q.tag==0) { printf(队列为空\n); exit(0);} ?? else { Q.front=(Q.front+1) % m; e=Q.data[Q.front]; if(Q.front==Q.rear) Q.tag=0; //空队列 } return(e); } 3、 (1)循环队列的定义 typedef struct { Elem

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档