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

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

教材学习内容总结

第三章:集合概述——栈

集合

  • 概念
  1. 集合是一种聚集、组织了其他对象的对象。集合的使用者(软件系统中的另一个类或对象)只能通过这些预定的方式和该集合进行交互
  2. 集合可以分为两大类:线性集合和非线性集合
  • 抽象数据类型
  1. 抽象数据类型是一种在程序设计语言中尚未定义其值和操作的数据类型。ADT必须对实现细节进行定义,且这些定义对用户是不可见的。
  2. 数据结构是一种用于实现集合的编程结构集。集合本身与实现集合的数据结构是分离的,可以用线性数据结构来实现非线性集合。
  • Java集合API

栈集合,利用栈计算后缀表达式

LIFO原则

主要的面向对象概念

  • 继承与多态性、泛型(例如栈ADT)
  • AraayStack类(学习pop、push、peek和其他操作)

第四章:链式结构——栈

(我没上这一节课,所以看得我还是挺懵的,感觉)

链式结构

  1. 指针:引用变量
  2. 结点:储存的对象
  3. 访问元素不能直接将指针移到要访问的元素处,这样会丢失之前所有的元素
  4. 插入结点前要先重新设置指向整个列表的引用
  5. 删除结点要特别注意首结点的删除方法

无链接的元素和双向列表

LinkStack

链表会按需求动态增长,因此在本质上,没有容量限制。

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

  • 问题1:泛型和多态的关系(这都是些啥鸭??

  • 问题1解决方案:没有关系。具体的参考这个讲得蛮复杂的封装,继承,多态,重载,重写和泛型详解(附图) ,但是简单来说就是泛型就是类型参数化,通过使用接口返回类型,方法就不会局限于实现栈的任何特定类。多态就是多个类由继承(实现接口)得到的一致外观, 好处是简化代码, 隔绝修改。

  • 问题2:p52"通过在列表前端引入哨兵结点和哑结点,就可以除去这种涉及第一个结点的情况"哨兵结点和哑结点分表是什么意思?

  • 问题2解决方案:看错了😀我以为两者之间是“和”,结果是“或”。哨兵结点是个哑元结点,可以简化边界条件,使代码更紧凑,并不存储任何实质的数据。

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

  • 问题一:pp3_2理解题意及思考过程。

  • 问题一解决方案:按照题目所说的是反向显示每个词的字符,而不是反向显示句子里所有的字符。那么这个时候就要先考虑如何将每一个单词分隔。在查询的过程中就看到了这个java中StringTokenizer使用,如果说substring方法可以分解字符串,返回的是原字符串的一个子字符串,那么StringTokenizer可以帮你将一个字符串分解为一个一个的单词或者标记。

    StringTokenizer两个常用的方法:

    1. hasMoreTokens()。这个方法和hasMoreElements()方法的用法是一样的,只是StringTokenizer为了实现Enumeration接口而实现的方法,从StringTokenizer的声明可以看到:class StringTokenizer implements Enumeration
    2. nextToken()。这个方法和nextElement()方法的用法是一样的,返回此 StringTokenizer 的下一个标记。
    3. StringTokenizer的三个构造方法:

      1. StringTokenizer(String str):构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。
      2. StringTokenizer(String str,String delim):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符。
      3. StringTokenizer(String str,String delim,boolean returnDelims):构造一个用来解析str的StringTokenizer对象,并提供一个指定的分隔符,同时,指定是否返回分隔符。

      代码托管

      pp3_2结果截图

      pp3_8结果截图

      pp3_9结果截图

      pp4_2结果截图

      上周考试错题总结

      • Which Growth function has the highest order?

        A .O(n log n)
        B .O(n2)
        C .O(2n)
        D .O(log n)
        哪个生长函数的阶数最高?
        如图可知,大意了

      结对及互评

      博客中课本内容总结详实,感悟深刻,但遇到的问题解决过程可以更加详细一点。
      基于评分标准,我给吴恒佚的博客打分:9分。得分情况如下:
      排版精美的加1分
      问题加分5分
      感悟不假大空加1分
      -正确使用Markdown语法加1分
      -模板中的要素齐全加1分

      点评过的同学博客和代码

      • 本周结对学习情况
        • 结对同学学号21
        • 结对学习内容
          -一起学习了第三章和第四章的内容,讨论了半天多态 继承还有接口的差别 不管有没有了解透彻 都hin有进步了!

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

      学习进度条

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

      参考资料

posted @ 2018-09-18 17:41  amberR  阅读(243)  评论(2编辑  收藏  举报
/*头部导航栏*/ #navigator { font-size:15px; border-bottom: 1px solid #ededed; border-top: 1px solid #ededed; height: 60px;/*导航栏高度,原始50*/ clear: both; margin-top: 25px; } /*导航栏设置,可以自定义导航栏的目录*/ #navList { min-height: 35px; float: left; } #navList li { /*每一个栏目节点*/ float: left; margin: 0 5px 0 0; /*这里原来是0 40px 0 0 */ } #navList a { /*栏目文字的格式*/ display: block; width: 5em; height: 22px; float: left; text-align: center; padding-top: 19px; }