博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DS博客作业03--栈和队列
阅读量:6595 次
发布时间:2019-06-24

本文共 2842 字,大约阅读时间需要 9 分钟。

1.本周学习总结

  • 关于栈和队列,在我看来其实它们非常相似,都是一个容器,有进有出,比如迷宫问题,两者都可以解决。栈于队列出去的方式不同,栈是先进后出,队列是先进先出,它们的库函数的使用也十分相似,都有.push() .pop(),在学习的时候学会栈的库函数的使用方法,队列的库函数的使用也就差不多也跟着学会了,但是在取栈顶和取队头的时候就不一样了,一个是.top()另一个是.front(),刚开始学习的时候很容易弄混淆。
  • 前几周学习了链表后再来学习栈和队列,在理解的方面感觉更加的容易,至少它的组成部分,使用方法,怎么自己建栈建队列这方面比刚开始学建链容易上手多了,但是在一些判断上比如栈空,栈满,队空的判断上还是需要谨慎。

    2.PTA实验作业

    2.1题目1:在一个数组中实现两个堆栈(函数题)

    2.1.1伪代码

函数1 创建栈    Stack S    申请S,S->Data空间    定义大小S->MaxSize=MaxSize    定义栈顶    S->Top1=-1;    S->Top2=MaxSize;    return S;函数2 进栈    if 栈满 then    输出Stack Full    return false    if Tag==1 then     S->Data[++S->Top1]=X    return true;    if Tag==2 then     S->Data[--S->Top2]=X;    return true;函数3 出栈    if Tag==1 then        if 栈空 then            输出Stack 1 Empty            return ERROR;        return(S->Data[S->Top1--])   if Tag==2 then        if 栈空 then            输出Stack 2 Empty            return ERROR;        return(S->Data[S->Top2++])

2.1.2代码截图

1474872-20190421152722060-2039819479.png

1474872-20190421152750743-779103173.png

2.1.3本题PTA提交列表说明。

1474872-20190421153446025-1013890560.png

问题1:对puts()函数的不了解,格式错误
解决1:put函数在输出后会自动换行,太久没有使用了,都忘记了,现在有回顾了一下。
问题2:这道题目中有两个栈顶,在判断栈空的时候的判断
解决2:Top1和Top2要分清楚,因为判断栈空的代码差不多就选择了复制粘贴,1474872-20190421154646018-1961370445.png1474872-20190421154713727-29957915.png

两个都用Top1判断眼睛没有那么敏锐发现不了错误,等提交的时候才发现

2.2题目2: jmu-ds-舞伴问题 (函数题)

2.2.1伪代码

函数1 队列长度     return(尾-头)函数2 加入队列     if Q->rear==MAXQSIZE then        return 0;    else        Q->data[Q->rear++]=e函数3 队列是否为空    return(Q->front==Q->rear)函数4 出队列    if 队空    return 0    else        e=Q->data[Q->front++]函数5 配对舞伴     for i=0 to num then        if 性别为男            EnQueue(Mdancers,dancer[i])        if 性别为女            EnQueue(Fdancers,dancer[i])    end for    while 两队皆不空 do        DeQueue(Fdancers,e)女出队列         cout<
<<" " DeQueue(Mdancers,e)男出队列 cout<
<

2.2.2代码截图

1474872-20190421160903630-447851025.png

2.2.3本题PTA提交列表说明。

1474872-20190421161039745-1826907781.png

1474872-20190421161119235-1453731644.png
问题1:没看清题目,先输出女舞者在输出男舞者
解决2:提交完后又看了一眼样例,发现男女反了
问题2:格式错误
解决2:这次看样例,一瞄没有发现问题啊,但是数据没有错只能空格和换行的问题才会格式错误了,最后发现中间隔两个空格,意想不到。

2.3题目3: 表达式转换

2.3.1设计思路

这道使用栈,先把表达式进行一次循环,分成两部分,因为是后缀表达式数字要先输出,所以第一部分前面有左括号后面是减号的数字的小数点的输出直到不是前面几种数据为止控制空格的输出,第二部分对于符号的处理,又分三种处理的方式,第一种遇到右括号,除了左括号可以把栈中的符号出栈输出;第二种空栈或有更高优先级,进栈;第三种以上情况都没有,栈中元素输出直到遇到左括号。这两部分处理完把栈中的元素输出。(在输出的过程注意空格)

2.3.2

1474872-20190421163024140-2146492798.png

1474872-20190421163053044-690375868.png

2.3.3本题PTA提交列表说明。

1474872-20190421163226171-860320867.png

1474872-20190421163154575-1339368702.png
问题1:多种错误
解决1:首先解决一下格式错误,注意每一部分之间有空格,空格加上去后开始有得分了
问题2:部分正确,在小数的情况下没有考虑,正负号也没有判断,是运算符还是什么
解决2:在判断括号的时候随便判断正负,小数的话,判断下一个元素是否为小数点还是数字,都直接输出就可以了

2.4.题目4:jmu-报数游戏

2.4.1设计思路

按照题目的意思好像是一个圈圈,让人的第一想法可能是要用循环队列,然而可以使用简单的链式队列做,直接使用队列的库函数,设一个变量count进行数数然后求余m,等于0的就出队,不等于0的就往后移,如此继续,直到队中没有元素。

2.4.2代码截图

1474872-20190421164114380-907272740.png

2.4.3本题PTA提交列表说明。

1474872-20190421163947660-1676972751.png

问题1:首先对题目不怎么了解,以为剩下的人数小于m之后就不用管了
解决1:然而并不是这样,剩下小于m的人还要继续数下去,直到全部出队为止
问题2:编译错误,变量名的重复
解决2:真的很可怕,变量名取cout,然后寻找了好久都没发现出错误,这个东西真的要注意,变量名一定要规范。

3、栈和队列上机考试

有一个表情包特别能描绘这种感受:当事人:现在就是后悔,非常后悔

错题1:在一个数组中实现两个堆栈

这道题在做题的时候就又出现些错误,以前的错误都改过来了,然而又犯了新的错误。

1474872-20190421232157353-103558248.png

1474872-20190421232221636-211175618.png

  • 解决方法:建栈的时候最后记得return S;判断空栈的时候输出的Tag改成1和2

    错题2:银行业务队列简单模拟

当时在刷题的时候这道题几乎没有任何细节的错误,一遍就过来,让我对这题很有信心,没想到有一个测试点一直过不了,但当时心情十分紧张,上机考又看不到测试点的具体内容,一直以为自己在栈空的时候没判断好,修改了几次,都没有解决。

1474872-20190421234542215-1754458456.png

1474872-20190421235214975-228122581.png

  • 解决方法:在判断A窗口为空时,让B窗口的第一个数前后不加空格。

转载于:https://www.cnblogs.com/linshuxin1761/p/10745237.html

你可能感兴趣的文章
[Effective Java]第十一章 序列化
查看>>
[算法导论]红黑树实现(插入和删除) @ Python
查看>>
iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
查看>>
使用ReaderWriterLock类实现多用户读/单用户写同步
查看>>
中国式危机公关9加1策略(第十四章 国外危机应对案例參考)
查看>>
CKEditor上传插件
查看>>
Java 缩放图片工具类,创建缩略图、伸缩图片比例
查看>>
Rebuild Instance 操作详解 - 每天5分钟玩转 OpenStack(37)
查看>>
利用scp传输文件小结
查看>>
面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
查看>>
C++使用hiredis连接带密码的redis服务
查看>>
SQL SERVER 批量生成编号
查看>>
thinkjs——一个字段一种数字代表两种状态
查看>>
C++的那些事:类的拷贝控制
查看>>
numpy得到数组的index
查看>>
JSP页面重定向
查看>>
RecyclerView具体解释
查看>>
vue2.0 vue-loader
查看>>
美国埃博拉患者是怎样治愈的?
查看>>
[离散时间信号处理学习笔记] 9. z变换性质
查看>>