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


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

    教材学习内容总结

    集合

    • 1.集合是一种对象,类似于保存其他对象的存储库
      集合中的元素通常是按照他们添加到集合的顺序,或者是按元素之间的某种内在联系来组织的。
    • 2、抽象数据类型(ADT)是由数据和在该数据上所实施的具体操作构成的集合。
    • 3、栈是一种线性集合,元素按后进先出(LIFO)的方法进行处理,有push,pop,peek,isempty,size等常用操作
    • 4、栈是用于计算后缀表达式的理想数据结构
    • 5、Java接口定义了一个抽象方法集,有助于把抽象数据类型的概念与其实现分割开来。

    链式结构---栈

    • 1.链式结构是基于数组的集合实现的主要代替方案,链表是一种链式结构,自引用式构成了链表的基础,在链表中存储的对象通常泛称为结点node
    • 2、链表会按需动态增长,因此本质上,它没有容量限制
    • 3、只要有效地实现了恰当的操作,集合的任何实现都可用来求解问题。
    • 4、双向链表需要维护两个引用:首结点和末结点
    • 5、LinkedStack类实现了StackADT类接口,LinearNode类用作结点类用于指向下一结点和指向本结点中存储的元素
    • 6、存储在集合中的对象不应该含有基本数据结构的任何实现细节。

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

    • 问题1:LinkedStack类与ArrayStack类的对比。

    • 问题1解决方案:百度后知道了两者不同的使用方法。
      stack的实现分为两种,一种是使用数组来模拟栈,另外一种是使用链表来模拟栈,ArrayStack使用数组来实现,LinkedStack使用链表来实现。

    • 《数据结构:栈》

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

    • 问题1:ArrayStack类核心方法的实现(用数组实现栈)
    • 问题1解决方案:
      压栈方法push
    public void push (T element){
         if(count == stack.length)
             expandCapacity();
         stack[count] = element;
         count ++;
      }
    private void expandCapacity(){
         T[]larger = (T[])(new Object[stack.length*2]);
         for(int index=0;index<stack.length;index++)
             larger[index] = stack[index];     
         stack = larger;
    }
    

    出栈方法pop()

    public T pop() throws Exception
        {
            if (count==0)
                throw new Exception("PopExpection");
            else
            count--;
            T math = stack[count];
            stack[count] = null;
            return math;
        }
    

    peek()方法

    public T peek() throws Exception
        {
            if (count==0)
                throw new Exception("PeekExpection");
            else
            return stack[count-1];
        }
    

    代码托管

    上周考试错题总结

    • Which Growth function has the highest order?
      A .O(n log n)
      B .O(n2)
      C .O(2n)
      D .O(log n)
      哪个生长函数的阶数最高?
      正确答案应该是c,当时看错了选成b。

    • Software systems need only to work to support the work of developers, maintainers, and users.
      A .True
      B .Flase
      正确答案应该是错误,软件系统不仅仅只需要支持开发人员、维护人员和用户的工作。

    结对及互评

    • 基于评分标准,我给严域俊的博客打分:7分。得分情况如下:

    正确使用Markdown语法(加1分)

    模板中的要素齐全(加1分)

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

    感想,体会真切的(加1分)

    点评认真,能指出博客和代码中的问题的(加1分)

    • 博客中值得学习的或问题:
      • 图片和文字相结合,方便理解。
      • 增加了博客中的目录,方便查看,同时样式进行了更新,显得更加美观
      • 阅读了许多资料,使得博客更有说服力。
    • 代码中值得学习的或问题:
      - commit依旧很详细,有条理性。

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20172333
      • 结对学习内容
        • 对于课后项目的编写。

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

    这周相较于上周的课后习题有所简单,但还是应该花费很多时间去课本,只有把课本知识搞懂,才能更好的去做项目。

    学习进度条

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

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:10小时

    • 实际学习时间:10小时

    • 改进情况:

    上一周由于课后没有仔细阅读课本,导致测试的时候很多知识点都遗忘,这一次课后花了大量时间去阅读课本,还是很有收获的。

    参考资料

  • 相关阅读:
    邓亚萍:我是如何学英语的(一种学习方法)
    qemu-nbd方式挂载qcow2镜像
    jquery 手机触摸事件
    用纯CSS创建一个三角形
    什么是闭包(closure),为什么要用它?
    javascript创建对象的几种方式
    如何垂直居中div?面试经常问到
    网页布局——左侧固定,右侧自适应
    python性能:不要使用 key in list 判断key是否在list里
    python实现的跳点寻路算法(JPS)
  • 原文地址:https://www.cnblogs.com/linanlalala/p/9671182.html
Copyright © 2020-2023  润新知