zoukankan      html  css  js  c++  java
  • 第03次作业-栈和队列

    1.学习总结

    使用思维导图将数据结构绪论、线性表、栈和队列等知识点组织联系起来。

    2.PTA实验作业 

    2.1题目1

    2.2.1思路

    1.首先就是把串全部读进来,合成一个大串。(把/**/ 改成<>代替)

    2.然后再对新生成的串处理,读入左括号,直接压入栈顶。

     如果读入的是右括号:

    (1)如果栈为空,那么缺少与之对应的左括号。

    (2)如果栈顶元素与之不匹配,那么缺少与栈顶元素相匹配的右括号。

    处理完之后,如果栈为空,则表示完全匹配,如果有剩余,那么就是缺少右括号。
    因为是输出第一个缺少的,所以直接输出栈尾的元素就可以。

    2.2.2伪代码

     2.3 代码截图

    2.4 PTA提交列表说明

    一开打出来的代码鲁棒性不是很好,有两个错误,知道了但解决不了

    然后我又重新打了一遍

    测试点5还是没过,应该是输出第一个不匹配的括号,不成功,还有/*(*/)竟然也是不匹配的

    然后重新整理思路再重打了下才成功。

    2.1题目2

    2.2.1思路

    1.堆栈a和b,更长的用做出队,短的用做入队


    (1)判队满:如果a满且b不为空,则队满
    (2)判队空:如果a和b都为空,则队空
    2.入队
        判队满否?
    (1)栈a若不满,则直接压入栈a
    (2)若a满,则将a中的所有元素弹出到栈b中,
        然后再将元素入栈a
    3.出队:
        判对空否?
    (1)若b空就将a中的所有元素弹出到栈b中,然后出栈
    (2)b不空就直接从b中弹出元素

    2.2.2伪代码

    2.3 代码截图

    2.4 PTA提交列表说明

    这道问题难度在入如何用栈模拟队列的想法实现,这道题一开始不太有思路,一位大佬提醒了我下进行分类讨论,以及一个模拟出栈,一个入栈

    后面才明白,多种错误的产生是开始某些地方没实现好,挺好改出来的。

     2.1题目3

    2.2.1思路

    1.如果窗口的时间小于等于用户的到来的时间

        时间添加到对应窗口,窗口处理客户数量增加
        
    2.如果所有窗口时间都大于用户的到来的时间

        寻找时间的最小的窗口,时间添加到最小的窗口
        窗口处理客户数量增加,判断等待时间最大的 

     2.2.2伪代码

    2.3 代码截图

    2.4 PTA提交列表说明

    一开始用编译器选择C导致编译错误,后面部分是一个循环条件没写好。

    此题对应的一道外加VIP服务的情况

    我在此题上面进行修改,发现有一个问题一直解决不了,就是等待的人有VIP(不是第一个)并且VIP窗口时间最小

    如何先处理VIP的情况解决不了

    我会在这次博客之后把这个问题解决的。

    3.截图本周题目集的PTA最后排名

    总分:2.5(选做题只做部分)

    4. 阅读代码

    《算法之美》の链表问题の获得链表中倒数第m个元素

    地址:请点击楼上小标题哦!

    问题:

    给定一个单向链表,设计一个时间优化并且空间优化的算法,找出该链表的倒数第m个元素。实现您的算法,注意处理相关的出错情况。

    m定义为当m=0时,返回链表最后一个元素。

    解答:

    这是一个难题,因为单向链表只能正向遍历,这个问题需要根据元素与链表尾的相对位置来找出该元素,

    但是当发现链表尾时,没有简单的办法回溯到倒数第m个元素。

    我的思考:此题的难点在于就是时间复杂度的问题

    优点:深入的对算法的效率进行了分析,研究出效率高的代码。

    5. 代码Git提交记录截图

  • 相关阅读:
    java集合的简单用法
    数据结构
    数据结构
    数据结构
    数据结构
    软件工程第三次作业
    软件工程第三次作业
    软件工程第三次作业
    软件工程第三次作业
    Linux 开发之线程条件锁那些事
  • 原文地址:https://www.cnblogs.com/guangguangge/p/8732360.html
Copyright © 2011-2022 走看看