严蔚敏《数据结构(c语言版)习题集》答案第三章-栈与队列(共10页).doc
《严蔚敏《数据结构(c语言版)习题集》答案第三章-栈与队列(共10页).doc》由会员分享,可在线阅读,更多相关《严蔚敏《数据结构(c语言版)习题集》答案第三章-栈与队列(共10页).doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上第三章 栈与队列 3.15 typedef struct Elemtype *base2; Elemtype *top2; BDStacktype; /双向栈类型 Status Init_Stack(BDStacktype &tws,int m)/初始化一个大小为m的双向栈tws tws.base0=(Elemtype*)malloc(sizeof(Elemtype); tws.base1=tws.base0+m; tws.top0=tws.base0; tws.top1=tws.base1; return OK;/Init_Stack Status push(BDS
2、tacktype &tws,int i,Elemtype x)/x入栈,i=0表示低端栈,i=1表示高端栈 if(tws.top0tws.top1) return OVERFLOW; /注意此时的栈满条件 if(i=0) *tws.top0+=x; else if(i=1) *tws.top1-=x; else return ERROR; return OK;/push Status pop(BDStacktype &tws,int i,Elemtype &x)/x出栈,i=0表示低端栈,i=1表示高端栈 if(i=0) if(tws.top0=tws.base0) return OVERFL
3、OW; x=*-tws.top0; else if(i=1) if(tws.top1=tws.base1) return OVERFLOW; x=*+tws.top1; else return ERROR; return OK;/pop 3.16 void Train_arrange(char *train)/这里用字符串train表示火车,H表示硬席,S表示软席 p=train;q=train; InitStack(s); while(*p) if(*p=H) push(s,*p); /把H存入栈中 else *(q+)=*p; /把S调到前部 p+; while(!StackEmpty(s
4、) pop(s,c); *(q+)=c; /把H接在后部 /Train_arrange 3.17 int IsReverse()/判断输入的字符串中&前和&后部分是否为逆串,是则返回1,否则返回0 InitStack(s); while(e=getchar()!=&) push(s,e); while(e=getchar()!=) if(StackEmpty(s) return 0; pop(s,c); if(e!=c) return 0; if(!StackEmpty(s) return 0; return 1;/IsReverse 3.18 Status Bracket_Test(char
5、 *str)/判别表达式中小括号是否匹配 count=0; for(p=str;*p;p+) if(*p=() count+; else if(*p=) count-; if (count1) if(gx-1y=old) gx-1y=color; EnQueue(Q,x-1,y); /修改左邻点的颜色 if(y1) if(gxy-1=old) gxy-1=color; EnQueue(Q,x,y-1); /修改上邻点的颜色 if(xm) if(gx+1y=old) gx+1y=color; EnQueue(Q,x+1,y); /修改右邻点的颜色 if(y=0) s=0; else if(m0&
6、n=0) s=n+g(m-1,2*n); else return ERROR; return OK;/g 3.25 Status F_recursive(int n,int &s)/递归算法 if(n0) return ERROR; if(n=0) s=n+1; else F_recurve(n/2,r); s=n*r; return OK;/F_recursive Status F_nonrecursive(int n,int s)/非递归算法 if(n0) return ERROR; if(n=0) s=n+1; else InitStack(s); /s的元素类型为struct int
7、a;int b; while(n!=0) a=n;b=n/2; push(s,a,b); n=b; /while s=1; while(!StackEmpty(s) pop(s,t); s*=t.a; /while return OK;/F_nonrecursive 3.26 float Sqrt_recursive(float A,float p,float e)/求平方根的递归算法 if(abs(p2-A)=e) p=(p+A/p)/2; return p;/Sqrt_nonrecursive 3.27 这一题的所有算法以及栈的变化过程请参见数据结构(pascal版),作者不再详细写出.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构c语言版习题集 严蔚敏 数据结构 语言版 习题集 答案 第三 队列 10
限制150内