zoukankan      html  css  js  c++  java
  • 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写错地方了。

  • 相关阅读:
    Python面向对象编程
    Python模块
    Python函数式编程(把函数作为参数传入)
    Python函数高级特性
    Python函数基础
    连续数字或英文字符文本强制换行
    flex布局文本过长不显示省略号
    在div中放一个相同大小的svg,实际显示的位置svg偏下
    设置git push默认branch
    c# using
  • 原文地址:https://www.cnblogs.com/chianun2000/p/10745046.html
Copyright © 2011-2022 走看看