DS博客作业03--栈和队列

1.本周学习总结

本周学习的栈和队列,对我来说难点在于栈和队列的输出输入中的栈空和队空判断,容易不小心把两个写混。在编程时,选择用栈的顺序存储结构空间利用率高,而用链式存储结构可以不用担心空间的不足或浪费,二者各有优势,但目前我用顺序存储结构更多。学了栈和队列,许多问题的解决变得方便了许多,比如括号问题的求解,表达式的转换和求值,函数调用和递归实现还有迷宫问题。熟练掌握栈和队列的操作对我们来说十分重要。

2.PTA实验作业

2.1.题目1:另类堆栈

2.1.1代码截图

2.1.2本题PTA提交列表说明

  • Q1:刚开始交的时候,只有最后一项测试点通过,其他测试点为格式错误。
  • A1:经检查,加上换行符,结果正确。
  • Q2:编译过程中,结果容易乱
  • A2:经检查发现,是出栈的S->Data[S->Top]以及S->Top- -两条语句写反了。

2.2.题目2:另类循环队列

2.2.1代码截图

2.2.2本题PTA提交列表说明

  • Q1:添加数据的函数出错
  • A1:要添加的位置没写清楚,应该写成(Q->font+Q->count)%Q-MaxSize

2.3.题目3:字符串是否对称

2.3.1设计思路

先令字符串中下标为0到下标为mid的字符入栈,mid=strlen(str)/2-1。然后从mid+1开始到历遍字符串(若为字符串为奇数个,则mid再加1,跳过中间那个数),同时和出栈元素对比,若有不同,则不是对称字符,返回0。

2.3.2代码截图

2.3.3本题PTA提交列表说明

  • Q1:调试时配对错误,在如何区分奇偶字符串上费了时间。
  • A1:后来仔细想清楚后,改动了对mid的操作。

2.4.题目4:栈与队列-stack、queue与string小综合

2.4.1设计思路

先将line中的字符依次入栈,再输出栈中元素个数与栈顶元素。出栈时要判断队列是否已满,栈是否为空。然后当栈顶不等于x时,输出栈顶字符入队列。输出队列元素个数,队头与队尾,以及队列中所有元素。

2.4.2代码截图




2.4.3本题PTA提交列表说明

  • Q1:多放了一个函数进去,导致运行超时。

3.栈和队列上机考试

3.1.题目:舞伴问题

3.1.1代码截图


3.1.2错误原因

1.判断队列是否为空的函数写错了但一直没看出来,导致后面的输出一直有问题。
2.没把题目给的输出函数中的参数e用上,没弄明白要怎么写这个函数

3.1.3后续改进

1.要把队空条件和栈空条件记牢了,别写混了。
2.写完一行代码就注意回头检查一下,否则容易写错,后面很难检查出来。

3.2题目:在一个数组中实现两个堆栈

3.2.1代码截图



3.2.2错误原因

1.提交后刚开始系统给的错误是段错误,发现是栈满条件写错了,改成Top1==Top2-1。
2.后来错误变成输出超限,改了半天实在改不出来,回去一看,发现是return写错了地方。

3.2.3后续改进

1.别再搞错栈满条件了。
2.要记清楚自己的思路,别写着写着就忘了,把return写错地方了。

posted @ 2019-04-21 21:44  chianun  阅读(341)  评论(0编辑  收藏  举报