zoukankan      html  css  js  c++  java
  • 20182320《程序设计与数据结构》第七周学习总结

    20182320《程序设计与数据结构》第七周学习总结

    教材学习内容总结

    1. 第十二章:算法分析

    1.1 算法:

    我认为是计算机完成一个任务所使用的计算方法。

    1.2 算法效率:

    我认为是在一定时间内,运用某算法来执行某任务的资源于时间的比值。

    1.3 增长函数

    增长函数表示了问题大小(n)与希望优化的值之间的关系。例如,洗碟子时,洗碟子的数量(n)和所用时间(t)的关系,"t=k*n"。

    1.4 渐进复杂度(时间/空间复杂度)

    又称为算法的阶,符号计为O(),它和增长函数有关,具体由例子解释:

    注意:若计算一个算法的阶,其中涉及函数调用时,要把函数里面的调用也算上。

    2. 第十四章:栈

    2.1 什么是栈?

    栈是一种数据结构,特点和电梯相似,元素从顶部压入栈中,先进去的元素后出来,后进去的元素先出来。

    2.2 栈需具备的基本方法

    #### 2.3 泛性 泛性,顾名思义,宽泛的类型。可用于声明,但不能实例化。需要在实例化的时候指定泛性引用变量的变量类型。 #### 2.4 后缀表达式 顾名思义,就是运算符放在数字后面的表达式。以下面为例: ![](https://img2018.cnblogs.com/blog/1779749/201911/1779749-20191101225433368-1491848476.png)

    用代码实现计算后缀表达式的思路如下:

    将表达式字符串用StringTokenizer分隔,单独提取,若提出来的是数字,则压入一个栈中,若是运算符,则从数字栈中弹出两个数字,用这个运算符进行计算,结果再次压入栈中。

    例如:
    !

    2.5 实现栈的数据结构的编程方法

    (1)用链表实现
    (2)用数组实现

    3. 第十五章:队列

    3.1 什么是队列?

    队列也是一种数据结构,结构特点也能从它的命名看出,就和我们日常排队差不多,元素一个接一个往后排,轮到某个元素出队的时候就从最前面出,如下图:
    !

    3.2 队列需具备的基本方法

    3.3 实现队列的编程方法

    (1)用链表实现
    (2)用数组实现

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

    • 问题1:泛型T和Object类型的区别?
    • 问题1解决方案:

    在网上查找:
    !

    总的来说,Object是一个可以实例化的变量,它无论是先声明,还是先实例化,在后面都要进行强制转换才能赋给别的数据类型变量。

    而T泛性则是在实例化之前就要给出确定的数据类型,所以不涉及强制转换。

    • 问题2:链表和数组的优缺点?
    • 问题2解决方案:

    数组比链表好在:能根据下标随机读取,链表要访问一个结点需要一个个摸过去;

    链表比数组好在:链表比数组节省空间,而且在面对多次循环,元素数量不确定时,链表能比数组更方便地开空间。

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

    • 问题1:

    在做PP14.7将前缀表达式转换成后缀表达式的时候,我想的过于复杂,甚至考虑到了运算符的优先级,但其实并没有那么麻烦。

    • 问题1解决方案:

    只需要运用两个栈,每个都是存放字符串型的变量。一个放整个表达式的所有元素,即数字、字符全放进去,随后开始pop,pop出数字就压入另一个栈,pop出运算符就在从另一个栈中pop出两个数字进行字符串连接,再放回放数字的栈。如此循环,不需要涉及字符串到字符型、整型的转换,也不涉及运算符优先级,就能实现前缀转后缀。

    • 问题2:

    在做查找及ADL作业中,在我编写用链地址法解决散列排序的冲突时,我的设置的指针始终都指向冲突点中的第一个位置,即由元素存放的位置,陷入死循环。

    • 问题2解决方案:

    后来发现我犯了一个逻辑性错误:

    for(a!=null){
        a=a.getNext();
    }
    a=new LinearNode();
    

    在上面的代码中,a到最后总会指向null,而无法像我想象的那样为a的前一个结点赋上下一个指针的值。

    [代码托管]

    https://gitee.com/zheng_liyuan/Leon/tree/master/ArrayStack/javafoundations
    https://gitee.com/zheng_liyuan/Leon/tree/master/Latter_Post
    https://gitee.com/zheng_liyuan/Leon/tree/master/LinkedQueue/code
    https://gitee.com/zheng_liyuan/Leon/tree/master/Queue

    结对及互评

    点评过的同学博客和代码

    • 本周结对学习情况
      • 20182307
      • 结对学习内容
        • 线性查找
        • 散列插入
        • 散列查找
        • 二叉树
        • 链表的插入、删除、弹出
        • 队列的插入、删除、出队
    • 上周博客互评情况

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

    首先,这周学习压力较前几周更大,花了很多时间来做实验、敲代码。时间花费过多,我认为主要原因有以下:

    (1)编程逻辑不够严谨,在编程量大的时候,经常会频繁出现空指针异常的报错。
    (2)程序条理不够清晰,虽然有简单的注释,但是还没能做到按照功能分块,往往贪图操作便捷,导致最后自己都看不懂自己的程序。

    其次,单步调试真是个好东西,虽然有点复杂,但是还是能有效排查程序中的错误。

    第三,安卓的所有布局中,原始布局最容易上手,可以随心所欲摆放组件位置。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 10000行 30篇 400小时
    第一周 208/208 2/2 9/9
    第二周 258/466 2/4 15/24
    第三周 693/1159 2/6 22/46
    第四周 1383/2542 2/8 30/76
    第五周 1300/3842 2/10 22/98
    第六周 1998/5840 2/12 24/122
  • 相关阅读:
    AutoLISP圆内接多边形
    AutoLISP以直线为基线添加文字
    jquery easyuidatagrid 如何清空数据
    MyBatis直接执行SQL查询及批量插入数据
    mappers文件中的#{}语法与${}语法的区别
    在windows7桌面上新建一个快捷方式,指向cmd命令窗口
    ResultSet转换List或直接遍历解决null问题
    linux命令
    flash build 4.6 报错 内存不足,无法加载...
    关于linux安装openoffice无法启动
  • 原文地址:https://www.cnblogs.com/leonzheng/p/11782738.html
Copyright © 2011-2022 走看看