第七周学习总结

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

教材学习内容总结

  • 十二章在讲编程中的时间复杂度的概念,时间复杂度越低,程序运行效率越高。时间复杂度的计算可通过寻找运行次数最多的程序,计算他的运行次数,取n的最高次方的极数,即为程序的时间复杂度。

  • 栈可以理解为一类数据的集合,栈中的元素可以写入,也可以读出。元素存在先后次序。先入栈的先被读出。栈可用数组,链表两种形式实现。应注意使用数组的实现链表时要注意数组大小,在push过程中可添加扩大数组大小的程序。这样的栈通过数组下表定义顺序。
    栈实现的链表通过setnext来实现链接

  • 泛型:通过泛型来定义类class Box<T>。可使栈使用更加灵活。栈中所存放的元素可通过使用时定义来实现。T即为战中存放数据的类型。如定义一个int型的栈Box<Integer> num1 = new Box();,即栈中存放int型的变量。若要对栈中的元素进行操作需要定义int型变量,或者需要定义方法返回值为int时,都可使用T来代替。而声明该类的对对象时,应Box<T> num1来定义。

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

  • 问题1:对泛型的理解不够深入。实例化时难以定义对象。

  • 问题1解决方案:起初被class Box<T>迷惑,不会使用。经百度及课本查询,得知该类名与其他类名无异,只是可以使程序更加灵活。

  • 问题2:对时间复杂度的计算还容易出现错误。

  • 问题2解决方案:时间复杂度可通过计算运行次数最多的程序来看。可通过数学计算方法来计算。

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

  • 问题1:程序运行时,提示pop方法出错。

  • 问题1解决方案:经单步调试,发现count数值有误。count表示节点个数,而栈中数组定义从0开始。因此stack[count]本就为空。而count修改为count-1即可解决问题。

  • 问题2:在用数组实现栈时,但数组下标会随着插入,删除,排序而改变,不方便的第二次操作。并且栈头也会丢失掉。

  • 问题2解决方案:为解决问题,我决定变换思路。起初我一节点为单位,实现节点之间的连接与断开连接。这样容易导致数组下标排序混乱。所以我决定将整个数组连接好,固定节点将数值放到每个节点盒子里,所以这样数组下标可以保持不变,从而解决问题。

  • 问题3:在泛型输出时,toString自定义为String型输出,而泛型T未定义,就会产生String=String+T型的式子,若T定义为Int,则为String=String+Int;

  • 问题3解决办法,通过对比测试,发现该代码在运行时并未出错,可能为IDEA在运行时自动进行转换。

  • 问题4:在前缀转后缀的练习中,将前缀表达式输入数组再取出时会产生元素排列顺序混乱等问题,难以实现代码。

  • 问题4解决办法:通过网络查找,使用两个数组进行编写,一个用于接收数据,另一个用于重组,既保证元素的灵活操作,又保证了数组的稳定性。

代码托管

上周考试错题总结

未考试

结对及互评

  • 基于评分标准,我给本博客打分:13分。得分情况如下:
  1. 正确使用Markdown语法加1分:

  2. 模板中的要素齐全加1分

  3. 教材学习中的问题和解决过程, (加4分)

  4. 代码调试中的问题和解决过程, (加2分)

  5. 周五前发博客的加1分

  6. 进度条中记录学习时间与改进情况的加1分

  7. 错题学习深入的加1分

  8. 结对学习情况真实可信的加1分

  9. 感想,体会不假大空的加1分

点评过的同学博客和代码

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

数据结构的学习要注意各种结构的特点,注意数据与数据连接时的细节,注意数据的结构特点,数据的存储(顺序还是链式),能进行的操作,以及操作的关键语句

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90
第五周 500/1000 3/7 22/60
第六周 700/1300 2/9 22/90
第七周 1300/1000 3/7 30/60
  • 计划学习时间:20小时

  • 实际学习时间:22小时

参考资料

posted @ 2019-11-02 11:02  20182315zjw  阅读(158)  评论(0编辑  收藏  举报