zoukankan      html  css  js  c++  java
  • 20172315 2018-2019-1《程序设计与数据结构》课程总结

    每周作业链接汇总

    • 第一周作业:学习教程第一章和第二章的内容,了解数据结构和算法分析相关知识。
    • 第二周作业:首先探讨集合以及用于实现集合的基本数据结构。定义了集合设计的相关问题和目标,这为集合的研究打下了基础。还将介绍一种称为栈的集合,并且以此为例展示与集合的设计、实现和使用等有关的问题。
    • 第三周作业:讨论了一种创建数据结构的技术,利用引用来创建对象之间的链接。链式结构是软件开发的基础,尤其对集合的设计与实现更是如此。与数组实现解决方案比较,链式结构既有优点,也有缺点。
    • 第四周作业:学习教材第6章,列表相关只是的学习,有序列表、无序列表、索引列表等。
    • 第五周作业:学习了排序和查找相关知识及其算法。
    • 第六周作业:学习了如何使用树,以及树相关的知识和如何进行遍历。
    • 第七周作业:学习二叉查找树是如何实现的,及其各种操作。
    • 第八周作业:将介绍二叉树的另一种有序扩展。我们将考察堆(包括链表实现合数组实现),以及往堆中添加元素或从堆中删除元素的算法。我们还将考察堆的一些用途,包括基本使用和优先队列。
    • 第九周作业:介绍Java的Set和Map集合概念。我们将探讨这些集合,并与之前的实现进行比较和对比。本章还介绍了散列的概念。

    自认为写得最好一篇博客是?为什么?

    自认为写的最好的博客是《程序设计与数据结构》第五周学习总结,因为对于学习内容总结非常到位,问题提出的较多,代码完成较好,截图较多。

    作业中阅读量最高的一篇博客是?谈谈经验

    作业中阅读量最高的一篇博客是《程序设计与数据结构》第一周学习总结,大概就是因为刚刚开始新的一学期,大家都想看看同学都是如何写博客的吧。

    实验报告链接汇总

    • 实验一:学习线性结构之链表。
    • 实验二:学习如何实现二叉树。
    • 实验三:学习如何进行查找与排序相关操作。

    团队项目报告链接汇总

    代码托管链接

    • 给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?

      代码量应该勉强及格吧。。
    • 加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
      还是像上学期说的一样,不要为了写代码而写代码,即使保持着好学的心态,每天学习的很晚,最后发觉并没有什么用。理解,理解 ,理解比什么都重要,思路要清晰,其他都是浮云。
    • 积极主动敲代码做到没?教材实践上有什么经验教训?
      这学期是做到了积极主动敲代码,这学期发现了教材上有很多错误,所以我觉得我们不能一味的对着书上的代码死敲,要学会理解其中代码的意义,否则你敲了代码跟没敲没什么区别。一旦你照着书上敲代码发生了错误,你甚至不能找到是什么原因。

    课堂项目实践

    • 20180907
      时间复杂度分析,用大O记法写出下面各题的时间复杂度。

    • ArrayStack类的实现和测试
      完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。对象。

    • 链表插入
      写出链表中节点插入的操作代码

    • 链表实践
      链表练习,要求实现下列功能:
      (1)通过键盘输入一些整数,建立一个链表(1分);
      (2)实现节点插入、删除、输出操作(2分,3个知识点根据实际情况酌情扣分);
      (3)使用冒泡排序法或者选择排序法根据数值大小对链表进行排序(2分);

    • 第4章代码检查
      运行PP28,PP28页的程序,根据个人学号输入后缀表达式并计算。(例如,学号172301,输入1 7 + 2 3 0 1 - + *)

    • PP4.1 LinkedStack补全
      给出size、isEmpty和toString等方法的定义,以完成LinkedStack类的实现。
      要求:1.能够运行
      2.需要测试各个方法
      3.把代码上传到码云,并将关键代码和运行结果截图加水印(学号)上传。

    • 栈队列测试题
      完成第六题的分析

    • ASL测试
      已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少?

    • 线性表实践
      定义一个商品类Product,需要包括商品名称、价格等信息,使用链式存储结构实现一个线性表,存储商店中的商品。
      支持插入、删除、选择排序、查找等功能,并进行简单测试。
      需要使用的知识点:
      1.泛型
      2.实现Comparable接口中的方法
      3.链式存储结构

    • 第6章代码检查
      运行PP6.8和PP6.11的程序,把结果截图,加学号水印,上传到蓝墨云。

    • 哈希冲突处理实践
      把自己的学号加21,例如学号为1,把22添加到序列后面,使用链地址法,解决冲突。
      编程实现,并测试。
      要求计算asl,输出冲突次数。

    • 三种查找算法练习
      每种算法2分,包括画出存储形式和asl的计算。

    • 层次遍历法实践
      (1)使用递归实现层次遍历背部疼痛决策树,并按照层次顺序输出每个节点内容。(2分)
      (2)非递归的层次遍历法算法如下:
      根结点入队;
      从队头取元素, 并执行如下3个动作:
      (1)访问该结点;
      (2)如果该元素有左孩子,则左孩子入队;
      (3)如果该元素有右孩子,则右孩子入队;
      重复执行上述过程,直至队列为空。 此时,二叉树遍历结束。
      按照上述算法,编程实现层序遍历,按照层序的方法,遍历并依次输出每个节点内容。(3分)

    • 中序和先序计算二叉树结构
      若已知中序和先序序列,计算二叉树结构
      例:已知一棵二叉树的先序序列和中序序列分别为ABDGHCEFI 和 GDHBAECIF,试确定二叉树结构。

    • [树的深度和叶子个数计算](https://www.mosoteach.cn/web/index.php?c=interaction_homework&m=homework_result_list&参考下面叶子节点计算的伪代码,计算课本中背部疼痛诊断器中决策树的叶子节点个数?
      int CountLeaf ( BiTree T, int &count )
      { if ( T )
      { if ( (!T->lchild) && (!T->rchild) )
      count++; // 对叶子结点计数
      CountLeaf( T->lchild, count);
      CountLeaf( T->rchild, count);
      }
      }
      (2)根据课堂介绍的递归树深度计算算法,计算决策树的深度。

    • 树-计算题
      计算题:
      1.有1023个结点的完全二叉树,其高度是多少?叶结点数是多少?(2分)
      2.高度为h的完全二叉树至少有多少个结点?至多有多少个结点?(2分)
      3.已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,…,nm个度为m的结点,问该树中有多少个叶结点?(2分)

    • 希尔排序测试
      D2等于2时,第2趟排序结果是?

    • 堆构造与排序
      根据关键字序列:36,30,18,40,32,45,22,50,构造一颗小顶堆,并排序?
      画出构造堆过程(树+数组)

    • 堆排序测试
      根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。
      要求:
      (1)输出构造好的大顶堆序列(层序);(2)
      (2)输出每轮排序的结果(数组的结果);(2)
      把结果截图并加学号水印上传到蓝墨云,代码上传到码云。
      课堂上完成且结果正确,直接得5分;
      课堂上未完成,课下完成且结果正确且撰写博客,得4分;

    • 十一链表练习
      画出十一链表结构

    • 最小生成树
      1.画出Prim算法的最小生成树的生成过程
      2.画出Kruscal算法的最小生成树的生成过程
      3.计算最小权值

    • Dijkstra(迪杰斯特拉)算法测试
      使用Dijkstra(迪杰斯特拉)算法计算单源(V1出发)最短路径。
      图2是课堂介绍的示例。
      要求
      (1)写出V1到各个顶点的最短路径
      (2)要求写出最短路径计算过程(类似于图2)

    • AOE练习
      1、求关键路径,v1和ve的值并写出具体步骤
      2、画出图一可能的拓扑序列
      3、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
      4、写出图三的邻接矩阵,并用prim算法求最小生成树,画出产生过程

    • 哈夫曼编码测试
      设有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。
      给定一个包含26个英文字母的文件,统计每个字符出现的概率,根据计算的概率构造一颗哈夫曼树。
      并完成对英文文件的编码和解码。
      要求:
      (1)准备一个包含26个英文字母的英文文件(可以不包含标点符号等),统计各个字符的概率
      (2)构造哈夫曼树
      (3)对英文文件进行编码,输出一个编码后的文件
      (4)对编码文件进行解码,输出一个解码后的文件
      (5)撰写博客记录实验的设计和实现过程,并将源代码传到码云
      (6)把实验结果截图上传到云班课

    • 课堂实践对提高应用能力有帮助吗?
      十分有帮助,俗话说得好,实践得真知。所以我在此建议这门课继续实行课堂实践,并加大训练量。

    • 课堂实践上自己有什么经验教训?
      要注意提高自己的速度以及自学能力,否则时间上就很赶。

    • 课堂实践上对老师有什么教学建议?
      就像上面说的这门课继续实行课堂实践,并加大训练量。(最好做到一日一练)

    课程收获与不足

    • 自己的收获:在程序设计与数据结构这门课上真正的掌握了很多技巧,从此运用这一门知识也会得心应手。
    • 自己需要改进的地方:代码的思路构建不够快,写一些实践就很赶时间。
    • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议:
      贯彻的不是很到位,在结对过程中,参与工作比较少,下次一定记得改进。

    问卷调查

    • 你平均每周投入到本课程有效学习时间有多少?
      一半左右吧,但我觉得这点时间想要学好这门课还是不够的,建议老师增加这门课的课时。
    • 每周的学习效率有提高吗?你是怎么衡量的?
      有一定的提高,从完成实践的速度来衡量。
    • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
      很有促进,建议加大蓝墨云的使用,毕竟这么好的东西不用就浪费了。
    • 你觉得这门课老师应该继续做哪一件事情?
      每周写博客,每天布置实践,课堂提问,检查代码。
    • 你觉得这门课老师应该停止做哪一件事情?
      停止课上讲书本相关的知识,完全靠自学。
    • 你觉得这门课老师应该开始做什么新的事情?
      开始加大博客以及实践的布置。以前的量还是太少了。开始进行每周课堂测验。

    给出你的总结中涉及到的链接的二维码

    按照顺序:
    一到九周作业:

    一到三实验:


    码云:

    实践:
    时间复杂度分析:
    ArrayStack类的实现和测试:
    链表插入:
    链表实践:
    第4章代码检查:
    LinkedStack补全:
    第5章代码检查:
    栈队列测试题:
    第6章代码检查:
    线性表实践:
    ASL测试:
    三种查找算法练习:
    哈希冲突处理实践:
    希尔排序测试:
    树-计算题:
    树的深度和叶子个数计算:
    中序和先序计算二叉树结构:
    层次遍历法实践:
    堆构造与排序:
    堆排序测试:
    十字链表练习:
    最小生成树:
    Dijkstra(迪杰斯特拉)算法测试:
    AOE练习(加分):
    哈夫曼编码测试:

  • 相关阅读:
    看看优酷是怎么做网络投票的?
    CURL的学习和应用
    PHP生成word的三种方式
    感谢
    网站后台权限设计
    ORACLE 11g 导出数据
    第一份blog
    查看tomcat的内存情况
    执行sshadd时出现Could not open a connection to your authentication agent
    读取SSDT当前函数地址
  • 原文地址:https://www.cnblogs.com/huzhitao/p/10203027.html
Copyright © 2011-2022 走看看