DS博客作业03--栈和队列
1.本周学习总结
这两周主要学习了栈和队列,栈和队列有一些地方相同,比如说都是以一定的顺序储存元素,都只能对一端进行操作,具有一定的局限性,而队列和栈也有不同的地方,比如说出队列是先进的元素先出,而栈的则是先进后出,不过好像在一次练习中看到元素可以从队列的队头或者队尾出元素,这是特殊情况吗?还是说队列其实都能。然后其实队列的操作还是挺简单的,也就入队出队判断队空这些函数,但是灵活运用队列和栈还是比较困难的,就有时候我不知道栈在这个题目中该如何去使用,多练应该能解决。因为这两周比较忙在pta上时间花的不多,所以导致上机考考的一塌糊涂。
2.PTA实验作业
2.1.题目1:在一个数组中实现两个堆栈
2.1.1设计思路
首先将栈1的栈顶置为-1
栈2的置为MaxSize然后判断Tag
进行不同的入栈操作
如果Tag为1则入栈1否则入栈2
然后进行入栈操作
接着是出栈
和入栈差不多的判断
2.1.2代码截图
2.1.3本题PTA提交列表说明
•Q1: 一开始在创建栈的那个函数没有return Stack导致段错误
•A1: 然后对着同学的代码改,return Stack应该就是讲栈的定义(如MaxSize这些的)返回
•Q2: 格式错误
•A2: 忘记换行了
•Q3: 出栈和入栈的函数运行超时
•A3: 在出栈和入栈的函数中没有用return结束操作导致运行超时
2.2.题目2:jmu-ds-舞伴问题
2.2.1设计思路:
结构体定义p,然后循环将dancer数组的值赋给p
每一次赋值之后进行对p。sex进行判断
然后进男队列或女队列
再用while循环直到男生队列没人或女生队列没人
然后输出人数多的队列的长度
最后输出队列长度 。
2.2.2代码截图
2.2.3本题PTA提交列表说明
•Q1: 第一个错误不记得之前是错在哪了
•Q2: 然后后面发现格式错误
•A2: 发现格式错误第一时间就去找输出的地方,发现少了个空格。
2.3.题目3:jmu-报数游戏
2.3.1设计思路:先将1.2.3.4.5.6等等入队然后逐渐出队再进队,直到每一次到n然后元素出队不进队并输出。再每一次输出之后再求队列长度,并将i赋为1,重新读队列元素。
2.3.2代码截图
2.3.3本题PTA提交列表说明
•Q1: 答案错误
•A1: 发现没有把那个队列的长度赋给num,使得num一直都是原来的长度。
•Q2: 还是答案错误
•A2: 这里少了空格也提示答案错误,不是提示格式错误。
2.4.题目4:符号配对
2.4.1设计思路: 当读到‘(’,‘{’,‘[’时入栈,当读到右括号时判断最近的符号是不是对应的左括号并出栈,即取栈顶元素判断,最后判断栈是否为空
2.4.2代码截图
2.4.3本题PTA提交列表说明
•Q:一开始在devc上都打好了,也运行过了,后面在pta上提交一直编译错误,重复提交了几次
•A:后面看了下pta提交错误的原因,说![](https://img2018.cnblogs.com/blog/1474724/201904/1474724-20190423121536479-825361144.png)然后想到改成c++的语法提交就过了。
3、栈和队列上机考试(-3--3分)
错题 :表达式求值
我的代码
因为一开始想到的就是数组的方式来做,再加上又是考试而且这题pta还没刷,就用数组的方法做了,而且我在读到一个操作符的时候就计算前后两个数字,做到后面发现没办法处理乘和除,就卡着下不去了。应该是读到第二个操作符时在进行计算,这样就可以处理乘除运算。
后面应该多用栈或者队列的方式来写题,不然以后做这类题目第一时间想到的还是用数组能不能做。
错题:在一个数组中实现两个堆栈
这一题一直在考试的时候用devc打,没提交。
这题主要的错误在为栈申请存储空间的时候不会写那个molloc,导致写不下去。另外两个函数其实也就是分类讨论然后进栈出栈这个还是会写的。最后还有return stack这一步在考试的时候也忘记了
现在知道了一部分,申请空间时首先是(存储的类型)malloc(sizeof(这一块还是搞不懂怎么写))。