zoukankan      html  css  js  c++  java
  • 数据结构-第3章学习小结

    第三章小结

    一、对本章内容的小结如图

    二、完成作业或实践时的心得体会

    1. 懂得stack、queue的各种操作后再用STL感觉方便很多

    2. 感觉自己有时候会想太多,比如作业题括号匹配我觉得 没有需要匹配括号的情况 运行结构应该是no,但是其实yes跟no都可以过测试点

    3. 作业跟实践1都打的比较顺,实践2(出栈序列的合法性)就有点慌了

    问题在于:一开始认为用数组来存放输入数据的话需要用两层循环,然后判断又应该需要两层循环,觉得时间复杂度可能有点大,然后就想用字符串(在错的道路越走越远的感觉)最后两个测试点过不了。问了小组同学他们也用了多个循环,我才重新回到原来的想法去打。有个小收获:利用STL的stack容器时,要写 !s.empty()  && s.top() == a[p] 不能写成s.top() == a[p] && !s.empty(),应该是因为s为空时不能访问s.top

    三、讨论/课前提问/小组合作收获

    1. 使用递归求解问题,分两步:1)写出递归公式  ; 2)根据递归公式进行求解(写代码)

    2. 根据递归公式进行求解,有两种方法:

      1)迭代——自底向上的求解方法(由最小规模问题逐步向上求解,直至求出原问题的解)

      2) 递归——自顶向下的求解方法(从原问题出发,分解出规模减小了的子问题,直至终止条件, 然后由终止条件的结果进行回推,求出原问题的值)

      两种方法比较:递归编程简单,只需要关注本层逻辑。但是,递归有可能出现重复子问题 的情况——使用备忘录记录已经求解过的子问题来优化

    3. 一种巧妙删除 L 的第一个有数据的结点(并没有真正删除首元结点,只是把首元结点变成了头结点,删除了原来的头结点)

    优点:无需考虑只剩最后一个元素结点的情形,因为不会真正删除这个结点,所以 tail 指针不会变成野指针

    void Delete(List &L) 
    {  
         if (L.head->next == NULL) 
        { 
             cout << "Empty list" << endl; 
             return; 
         }
    
         LNode *p = L.head; 
         L.head = L.head->next; 
         cout << "Delete " << p->next->data << " OK" << endl; 
         delete p; 
    }

    4. 打代码前要仔细看并利用好题目的条件,可能会隐含优化代码的突破点

    四、向大家分享的资料

    1. C++ STL入门总结:https://blog.csdn.net/happyguys12345/article/details/72828625

    2. STL容器当作参数传递:https://blog.csdn.net/yishaxiaoyao/article/details/44344097

    五、上一阶段的目标完成情况,接下来的目标

    1. 对上一阶段目标完成阶段自我感觉良好,学习预习、上课、打代码都是认真对待。(唯一担心学了新的,旧的知识可能会陌生一点,所以需要不定时回顾复习或者打打相关代码)

    2. 接下来也没有什么大目标,依旧还是好好学习,好好打代码,学着把知识应用起来。还有就是能熟练使用STL。

  • 相关阅读:
    深入浅出WPF-08.Event( 事件)01
    深入浅出WPF-07.Property(属性)
    深入浅出WPF-06.Binding(绑定)03
    深入浅出WPF-06.Binding(绑定)02
    深入浅出WPF-06.Binding(绑定)01
    常用快递电子面单账户申请详解(顺丰、中通、圆通、申通、百世、韵达)
    快递鸟电子面单批量打印以及模板设置
    快递公司电子面单怎么申请充值单号(中通、圆通、申通、韵达、百世)
    不限量的快递鸟单号查询接口-JAVA对接方法
    快递单号识别查询api接口调用对接demo
  • 原文地址:https://www.cnblogs.com/Madge/p/12770469.html
Copyright © 2011-2022 走看看