zoukankan      html  css  js  c++  java
  • 20182312第七周学习总结

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

    教材学习内容总结

    课本第12章 算法分析
    (1)学习了算法效率分析以及时间复杂度中的大O记法
    (2)学习了增长函数的比较,用于分析算法运行效率,增长函数表示问题大小与希望优化的值之间的关系,该函数表示算法的时间或空间利用率。这个比较是必要的,因为如果算法的运行效率低,使用更快的处理器也无济于事。
    (3)循环,嵌套循环及方法调用的复杂度分析:首先要确定该循环体的阶次n,然后用该循环要运行的次数乘以它。
    课本第14章 栈
    (1)集合:一种聚集、组织了其他对象的对象,是一种隐藏了实现细节的抽象。
    (2)栈:一个后进先出,先进后出的集合,其中常用方法为push(入栈)pop(出栈)peek(显示栈顶元素)isEmpty(判断是否为空)size(确定栈的元素数目)等并且,栈可以通过很多方法实现,如数组,链表(栈的链表实现是从链表的一端添加和删除元素)。
    课本第15章 队列
    (1)队列的元素是按FIFO方式处理的:第一个进入的元素,也就是第一个退出的元素,队列也可以通过数组和链表实现。同时有这几个操作:enqueue入队dequeue出队first显示队首isEmpty是否为空size元素个数

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

    • 问题1:数组实现的队列和栈,当新元素加入到一个满的数据结构中时应该做些什么,因为毕竟数组是一个固定大小的数据结构。
    • 问题1解决方案:
    • (1)实现往集合添加一个元素的操作,如果集合为满,抛出一个异常。
    • (2)实现add操作,该操作返回一个可由用户检查的状态标识符,一边查看该add操作是否成功
    • (3)当需要时可扩展集合的容量。
    • 问题2:数组实现的队列,向中间插入元素是不是很麻烦,需要把很多元素移位。
    • 问题2解决方案:把数组看做环形的,可以出去在队列的数组实现中把元素移位的需要
    • 问题3:老师上课所说的front和rear的位置重合时怎么判断到底是空还是满
    • 问题3解决方案:这里记录一种新奇的方法,即记录rear和front移动的方向,从而确定它到底是空还是满。

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

    • 问题1:在使用链表实现二叉排序树的时候链表莫得了。
    • 问题1解决方案:在私有变量中定义一个root保存好根节点,根节点一丢整个链表就没了。
    • 问题2:用链表实现队列和栈似乎有区别
    • 问题2解决方案:我们必须要操作链表的两端,于是,除了一个指向链表首元素的引用(称为head)之外,还需要跟踪另一个指向链表末元素的引用(称为tail)。还要用一个整型变量count来跟踪队列中的元素数。

    代码托管

    点评过的同学博客和代码

    • 本周结对学习情况

      • 20182308
      • 结对学习内容
        • 我们一起交换了有关链表的理解,互相帮助了一下各自链表的使用。
    • 上周博客互评情况

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

    这一周学的东西就概念或者说原理来说是不难的,但是极其重要,相当于是一种工具,我们这几周做的实验和实践其实都是与这息息相关的,而我们在学习的过程中着重于链表对于栈和队列的实现,链表如果能学通,后面的实验和实践应该好做不少。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 130/130 2/2 23/23
    第二周 451/581 3/5 42/67
    第三周 451/581 3/5 42/67
    第四周 617/1068 2/7 28/95
    第五周 632/1700 2/9 17/112
    第六周 666/2366 1/10 22/134
    第七周 1666/4032 3/13 42/178
    • 计划学习时间:50小时

    • 实际学习时间:42小时

    • 改进情况:在编代码之前要想很久相关的逻辑和算法,现在逻辑的思考比敲代码重要了。

    参考资料

  • 相关阅读:
    Redundant Paths 分离的路径(边双连通分量)
    bzoj2208 [Jsoi2010] 连通数(tarjan点双连通分量 // dfs)
    [bzoj3331] [BeiJing2013] 压力(tarjan 点双连通分量)
    [ BZOJ1123 ] BLO(tarjan点双连通分量)
    bitset小总结
    牛客328B Rabbit的工作(1)
    # Codeforces Round #529(Div.3)个人题解
    HDU5957 Query on a graph(拓扑找环,BFS序,线段树更新,分类讨论)
    istringstream()函数的用法
    codeforces 1077F1
  • 原文地址:https://www.cnblogs.com/shouko/p/11787814.html
Copyright © 2011-2022 走看看