20182305 2019-2020-1 《数据结构与面向对象程序设计》第七周学习总结

20182305 2019-2020-1 《数据结构与面向对象程序设计》第七周学习总结

教材学习内容总结

这一周的学习内容包括教材第十二章、第十四章和第十五章。

  • 第十二章内容有算法分析,包括效率,方法调用、以及递归,主要用来比较不同算法之间效率的高低不同,增长函数显示了与问题大小相关的时间或空间利用率。即时间复杂度用于表示这个算法耗时的变化快慢。
  • 第十四章讲的是栈。这一章内容多的一批。首先从集合引入,引出栈的概念。栈就类似一摞本子,先放进去的元素被放在下面,后方的在上面。取出时先进栈的元素后出栈,后进栈的元素先出栈。栈常用的方法包括入栈(push),弹出栈顶元素(pop),显示栈顶元素(不弹出)(seek),判断是否为空(isEmpty)等等,在这个一过程还学了泛型。栈可以用多种方法实现,包括链表,数组。
  • 第十五章学习了队列。也是可以用多种方法来实现。与栈不同,队列只能从队尾入队,从队列的头出队,所以是一个严格的顺序结构。
  • 在十四十五章学习过程中,链表是一个难点,也是重点。因为链表的形式也些许复杂,需要多加注意。

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

  • 问题一:链表和数组各有什么优缺点?二者相比较有哪些特点?

      数组比链表好在:能根据下标随机读取,更加方便灵活,而链表要访问一个结点需要一个个按顺序进行读取,直到读取到想要的元素;链表比数组好在:链表比数组节省空间,而且在面对多次循环,元素数量不确定时,链表能比数组更方便地开空间。同时链表也比数组更灵活、方便的增加、删除元素,尤其是体现在中间插入时,数组需要依次向后移动元素,而链表只需要改变插入位置前一个元素的next指向就可以。
    
  • 问题二:对泛型的理解不够清楚,不明白如何使用。

     泛型其实就可以当作一种普通的变量类型来使用,只不过它的使用不确定具体某种类型,使程序更加灵活。
    
  • 问题三:怎么判断front = rear 时,队列究竟是空还是满?

      可以通过打印队列的方式,来判断队列中是否有内容。有同学提出可以判断rear靠近front的方向,我认为有些麻烦。
    

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

  • 问题一:在使用stack.pop()方法时提示空栈异常。

       这个问题其实是出在我对程序的循环控制上,出栈次数大于入栈操作次数,使得最后一次出栈时,栈内没有任何元素。所以会抛出异常。
    
  • 问题二: 链表的使用。对链表的使用不清楚,出现空指针异常,不明白怎样链接链表。

     反复实验和学习后,发现必须要先实例化一个头,这个头要在整个链接过程中保持不变,其他元素的都要连在他的后面。
    

代码托管

结对学习同学博客(20182327)

  • 博客中值得学习的或问题:

    • 分点分章节总结学习内容,全面、真实的写出了自己这周的学习情况。
    • 添加了图片和代码片段,很好的记录了学习过程中出现的问题,记录了学习中的点子和想法。有助于记录自己的学习过程、代码出错的情况,便于后续学习纠错总结。也可以更好的总结这一周的学习情况。
  • 代码中值得学习的或问题:

    • 善于利用Java语言代码复用性高的特点,不需要重复敲代码,善于使用继承,使用以前瞧过的代码。
  • 基于评分标准,我给本博客打分:11分。得分情况如下:正确使用Markdown语法+1.教材学习中的问题和解决过程+2.代码调试中的问题和解决过程+3.感想,体会不假大空+1.点评认真,能指出博客和代码中的问题+1.结对学习情况真实可信+1.课后题有验证+1,进度条有记录+1.

点评过的同学博客和代码

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

随着课程深入,最近的学习内容越来越多也越来越难,需要占用很多时间,而且使用的教材和辅导书也有好多本,有时候找资料都会十分麻烦。最近的学习真的好累,也好艰难,感觉学习效率都有所下降。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000行 30篇 400小时
第一周 200/200 2/2 17/17
第二、三周 556/756 3/5 31/48 明白了类与方法的关系,对Java编程的思想的了解有了一些进步
第四周 673/1429 2/7 12/60 对两段代码之间的关系了解了一些
第五周 1308/2737 2/9 25/85
第六周 800/3537 2/11 18/103
第七周 4195/7732 2/13 27/130
posted @ 2019-10-23 16:02  20182305孙铭泽  阅读(202)  评论(2编辑  收藏  举报