• 20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结


    20172324 2018-2019-1 《程序设计与数据结构》第四周学习总结

    教材学习内容总结

    列表集合

    列表 说明
    有序列表 其元素按照元素的某种内在特性进行排序
    无序列表 其元素间不具有内在顺序,元素按照它们在列表中的位置进行排序(不要被名字误导,按照特殊顺序摆放,只是这种顺序与元素本身无关)
    索引列表 其元素可以用数字索引来引用

    索引列表和数组的根本区别在于索引列表的索引值总是连续的。

    Java API中的列表

    方法 描述
    add(E element) 往列表的末端添加一个元素
    add(int index, E element) 在指定索引处插入一个元素
    get(int index) 返回指定索引处的元素
    remove(int index) 删除指定索引处的元素
    remove(o object) 替代指定索引处的元素
    set(int index,E element) 返回列表中的元素数量
    size() 返回列表中的元素数量

    使用数组实现列表

    1. 基于数组实现的列表首先要把列表的一端固定在索引0处,设置一个整数变量rear表示列表中的元素数目,同时表示列表末端的下一个可用位置。
    2. remove操作查找作为参数传递的元素,如果找到就从列表中删除,然后数组中更高引索的元素向下平移以填补空隙
    • find方法用于查找制定元素,若存在便返回索引值
      • 好处
        • 使remove操作变得简单。
        • 能用find方法来实现其他操作及方法
        • 不会抛出异常
    • continue方法该操作用于判断指定元素是否在列表中
    • add方法要进行多次比较和平移操作
    • 无序列表的特有操作
      • addToFront(复杂度为O(n))和addToRear(O(1))
      • addAfter
        • 两个参数,一个表示要添加的元素,一个表示目标元素,类似于remove和add操作,复杂度位O(n)

    使用链表实现列表

    • 链表实现的remove操作不需要平移元素,但有四种情况:

      • 要删除的是列表的唯一元素
      • 要删除列表的首元素
      • 要删除列表的尾元素
      • 要删除列表的中间元素。

      在这些所有情况下,count都递减1,而在其中仍然存在要进行n次比较操作的情况,因此其时间复杂度也为O(n)。

    教材学习中的问题和解决过程

    • 问题1:列表与链表的关系

    • 问题1解决方案:链表是一种实现策略,列表可以用链表或数组来实现,列表集合没有内在的容量大小,可以随着需求增大而增大1

    • 问题2:instanceof的用法

    • 问题2解决方案:
      A instanceof B ,返回值为boolean类型,用来判断A是否是B的实例对象或者B子类的实例对象。如果是则返回true,否则返回false。

    Person p = new Person() ; //
       Man m = new Man() ; //Man是Person的子类
       Animal a = new Animal() ;
       m instanceof Man //返回true
       m instanceof Animal//返回false
       m instanceof Person//返回true
    

    代码调试中的问题和解决过程

    • 问题一:敲完ArrayList和Linkedlist之后出现了报红

    • 问题一解决方案:自己敲一个ElementNotFoundException和NonComparableElementException就好了。但是我敲完之后,idea就崩了...

    • 问题二:实现addafter时,出现了如下错误

    • 问题二解决方案:翻书看了一下addafter方法需要找到的是目标元素而不是目标的索引值,之前的target我写的是索引值,无法识别出来,所以报错了

    • 问题三:如图,在实现listlinked的时候出现了如下问题

    • 问题三解决方案:开始一直以为是torear方法出错了所以一直在更改addtorear,debug之后发现是因为addtorear那个位置是空的,所以无法插入。原因出在addtofront方法里,没有考虑没有插入元素时列表是空的,除了定义head=node之外,还需要定义rear=node

    代码托管

    上周考试错题总结

    • The first operation removes an element at the front of the queue and returns a reference to it.(x)

    结对及互评

    正确使用Markdown语法(加1分)
    模板中的要素齐全(加1分)
    教材学习中的问题和解决过程, (加3分)
    代码调试中的问题和解决过程, 无问题
    感想,体会真切的(加1分)
    点评认真,能指出博客和代码中的问题的(加1分)
    结对同学学号21
    基于评分标准,我给以上博客打分:8分。

    点评过的同学博客和代码

    • 本周结对学习情况
      • 结对同学学号21
      • 结对学习内容
        • 教材第6章
        • 完成课后自测题,并参考答案学习
        • 完成课后练习题
        • 完成程序设计项目PP6.8、PP6.11、PP6.17

    其他(感悟、思考等,可选)

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 0 1/1 20/20
    第二周 300/500 1/2 18/38
    第三周 300/600 1/3 18/38
    第四周 354/900 2/5 18/38

    参考资料

  • 相关阅读:
    Sql Server 2016数据库定时备份操作步骤
    .net 生成原图和多张缩略图
    python小知识
    python小知识
    Q pi (lambda)
    GAE&reward shaping
    yield函数
    关于vs code和markdown
    强化学习第七章
    强化学习第六章
  • 原文地址:https://www.cnblogs.com/amberR/p/9752072.html
Copyright © 2020-2023  润新知