C语言栈和队列课后题.ppt

C语言栈和队列课后题.ppt

ID:57783710

大小:160.50 KB

页数:28页

时间:2020-09-02

C语言栈和队列课后题.ppt_第1页
C语言栈和队列课后题.ppt_第2页
C语言栈和队列课后题.ppt_第3页
C语言栈和队列课后题.ppt_第4页
C语言栈和队列课后题.ppt_第5页
资源描述:

《C语言栈和队列课后题.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章栈和队列习题课3.3写出下列程序的输出结果(栈的元素类型SElemType为char)。Voidmain(){StackS;Charx,y;InitStack(S);x=’c’;y=’k’;push(S,x);push(S,’a’);push(S,y);pop(S,x);push(S,’t’);push(S,x);pop(S,x);push(S,’s’);while(!StackEmpty(S)){pop(S,y);printf(y);}printf(x);}输出结果是:stack3.3解答先解释一下你的一个误区:Pop()函

2、数是出栈并且将出栈的元素存放在第二个行参里,所以在这里x的值不再是c了,而是出栈的元素。。过程:首先是三个压栈操作,之后栈里的元素为:cak,左边的为栈底,右边是栈顶。然后一个出栈,此时栈里的元素为:ca,x中存的是k;之后两次压栈,此时栈里的元素为:catk;之后一个出栈,此时栈里的元素为:cat,x中存的是k;最后一次压栈,此时栈里的元素为:cats,x中存的是k;之后while(!StackEmpty(S)){Pop(S,y);printf(y);};结果是stac,Printf(x);结果是k,所以最终的结果为stack3.

3、4简述以下算法的功能(1)Statusalgo1(StackS){inti,n,A[255];n=0;While(!StackEmpty(S)){n++;Pop(S,A[n]);}For(i=1;i<=n;i++)Push(S,A[i]);}(2)Statusalgo2(StackS,inte){StackT;intd;InitStack(T);while(!StackEmpty(S)){Pop(S,d);if(d!=e)Push(T,d);}while(!StackEmpty(T)){Pop(T,d);Push(S,d);}3.4

4、题答案是:(1)程序段的功能是将一栈中的元素按反序重新排列,也就是原来在栈顶的元素放到栈底,栈底的元素放到栈顶。此栈中元素个数限制在255个以内。(2)程序段的功能是利用栈T,将一个非空栈S中值等于e变量的元素全部删去。3.12写出下列程序段的输出结果(队列中的元素类型QElemType为char)Voidmain(){QueueQ;InitQueue(Q);Charx=’e’,y=’c’;EnQueue(Q,’h’);EnQueue(Q,’r’);EnQueue(Q,y);DeQueue(Q,x);EnQueue(Q,x);DeQ

5、ueue(Q,x);EnQUeue(Q,’a’);While(!QueueEmpty(Q)){DeQueue(Q,y);Printf(y);}Printf(x);}输出结果为:char3.12解答首先三次入队操作,结果为:crh,左边为对尾,右边是队首,一次出队一次入队后变为:hcr,再一次出队一次入队后变为:ahc,此时x中存的是r,语句while(!QueueEmpty(Q)){DeQueue(Q,y);printf(y);};执行后结果为:cha;Printf(x);执行后为:r故结果为:char。。3.13、简述以下算法的功

6、能(栈和队列的元素均为int)Voidalgo3(Queue&Q){StackS;intd;InitStack(S);while(!QueueEmpty(Q)){DeQueue(Q,d);Push(S,d);}While(!StackEmpty(S)){Pop(S,d);EnQueue(Q,d);}}程序段的功能是将一个循环队列Q经过S栈的处理,反向排列,原来的队头变成队尾,原来的队尾变成队头。1.假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在两个栈,它们的栈底分别设在数组的两个端点。试编写实现这个双向栈tws的三个

7、操作:初始化initstack(tws),入栈push(tws,i,x)和出栈pop(tws,i),其中i为0或1,用以分别指示设在数组两端的两个栈。typedefstruct/*两栈共享一向量空间*/{datatypev[m];/*栈可用空间0—m-1*/inttop[2]}twostack;0M-1栈1底栈1顶栈2底栈2顶(1)intpush(twostack*s,inti,datatypex)/*两栈共享向量空间,i是0或1,表示两个栈,x是进栈元素,*//*本算法是入栈操作*/{if(abs(s->top[0]-s->top

8、[1])==1)return(0);/*栈满*/else{switch(i){case0:s->v[++(s->top[0])]=x;break;case1:s->v[--(s->top[1])]=x;break;default:pr

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。