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写错地方了。

  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/chianun2000/p/10745046.html
Copyright © 2011-2022 走看看