20172327 2018-2019-1《程序设计与数据结构》课程总结

20172327 2018-2019-1《程序设计与数据结构》课程总结

每周做业连接汇总


第一周做业:课本的第一章和第二章,分别讲了什么是软件,软件质量特征,数据结构,时间复杂度等。php


第二周做业:对课本第三章和第四章的学习,学习了栈,集合结构的栈和链式结构的栈。html


第三周做业:对课本第五章的学习,学习了队列,Java API中的队列,链表实现队列,数组实现队列等。node


第四周做业:对课本第六章学习,学习了类的列表,了解列表的种类,列表内的方法。git


第五周做业:对课本第九章的学习,学习了排序与查找,查找的多种方法和排序的多种方法。web


第六周做业:对课本第十章的学习,学习了树的内容,包括树的遍历,树的实现,二叉树等。算法


第七周做业:对课本第十一章的学习,学习了二叉查找树,实现了用来链表实现二叉查找树和有序列表实现二叉查找树,还完成了平衡二叉树。编程


第八周做业:对课本第十二章的学习,学习了优先对列与堆,了解了最大(最小)堆的实现,堆的排序以及优先队列。后端


第九周做业:对课本第十三章的学习,学习了无向图,有向图,带权图和图算法。数组

The best and the most

  • 自认为写得最好一篇博客是?为何? [第五周](https://www.cnblogs.com/mrf1209/p/9787932.html)博客,由于从那篇博,我认认真真的将全部的排序和查找方法都列了出来,并认真的讲解其过程,并配了图。
  • 做业中阅读量最高的一篇博客是?谈谈经验 说实话,这学期这个问题依旧让人很纠结,由于我博客被阅读量最大的那篇团队做业一,咱们团队的博客都是我一我的来写的,因此浏览量多其实只是别的同窗来看咱们团队的东西而不是个人博客,因此我就说个人第四周博客吧,我其实没以为不同凡响,也没就就以为这篇和其余篇有啥区别,浏览量多是我那一周交的早了点吧,哈哈。

实验报告连接汇总


实验一 实验名称:线性结构实验报告

简要内容:对以前所学的数据结构进行熟悉和操做。

实验二 实验名称:树实验报告

简要内容:
对于树这一种数据结构的深刻学习,包括了如何去创建一颗二叉树,决策树,以及对于红黑树代码的分析以及算法的理解。

实验三 实验名称:查找与排序
简要内容:安装alibaba 插件,解决代码中的规范问题。完成重构内容的练习

实验四 实验名称:哈夫曼树的编码实验

简要内容:关于哈夫曼树的创建以及经过哈夫曼树进行编码而且对于一段文档进行加密的实现。数据结构

团队项目报告连接汇总(消消乐)


团队做业第一周

  • 团队介绍;
  • 团队任务立项;
  • 团队任务分配;
  • 团队项目经验;
  • 需求说明书;

团队做业第二周

  • 修改完善《需求规格说明书》;
  • 制定团队的编码规范;
  • 使用Powerdesigner绘制ER图;
  • 项目的后端架构设计;
  • 团队分工;
  • TODOList及燃尽图;
  • 小组会议及交互总结;
  • 本次分工及工做量比例

冲刺周-RSP小组——消消乐

代码托管连接:

20172327马瑞蕃

statistic.sh的运行结果

说明本学期的代码量目标达到没有


代码量是达到了的,这学期知识点串联的比较紧,因此好多代码是有重复使用还和更改的,因此代码量其实并无特别高,再合适的范围内吧。

加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得。


对于《编程的智慧》这篇文章,我读过以后有不少新的认识,这篇文章主要说的是编程过程当中的不少重构优化的建议。对于一个对编程入门不久的新人来讲,编程学习和代码的实现其实有时就会作的很麻烦,因此就须要更好的指导和更好的思惟方式从而使你所实现的代码优雅可读好用。

文章提到了反复的推敲代码,其实任何东西都应该有艺术性,当你的代码经过不断的推敲感悟,如同画家对于画做的不断修改,才能将最美的一面展示给你们。优雅的代码在我看来,就应该整整齐齐的放在一个一个的盒子中,而完美的逻辑就应该像树状结构,将每一个盒子串起来。

对于代码的可读性,真正优雅可读的代码,是几乎不须要注释的。若是咱们充分利用了程序语言的表达能力,你彻底能够用程序自己来表达它到底在干什么,而不须要天然语言的辅助。有少数的时候,你也许会为了绕过其余一些代码的设计问题,采用一些违反直觉的做法。这时候你可使用很短注释。这可能对于如今的咱们来讲有点困难,可是我想,你在你代码中使用有意义的函数和变量名字,局部变量名字应该简短,简短的配合上下文,就能够简洁明了的表达代码逻辑了。

这篇文章实际上是很是实用的,对于之后的学习和交流,都有不少帮助。

积极主动敲代码作到没?教材实践上有什么经验教训?


这学期其实我并无和上学期同样那么主动去敲代码,书本上的代码也没本身敲过,并且本学期的书中错误仍是比较多的,这些是我这学期的不足,可能本身变懒了,或者这学期其余活动有些多,因此对于代码的态度有点懈怠。

教材实践也没啥经验,跟随大流吧,多看看书,多看看示意图,多看看网上的博客,就会了解更多。

课堂项目实践


实践一 实验名称: 时间复杂度分析
实践内容:

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


实践二 实验名称: ArrayStack的实现和测试
实践内容:

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


实践三 实验名称: 链表插入
实践内容:

  • 写出链表中节点插入的操做代码:
    public static void InsertNode(Student2 Head, Student2 node){

    }
  • 写出伪代码便可,须要逻辑正确。


实践四 实验名称: 链表实践
实践内容:

  • 经过键盘输入一些整数,创建一个链表(1分);
  • 实现节点插入、删除、输出操做(2分,3个知识点根据实际状况酌情扣分);
  • 使用冒泡排序法或者选择排序法根据数值大小对链表进行排序(2分);


实践五 实验名称: 第四章代码检查
实践内容:

  • 运行PP28,PP28页的程序,根据我的学号输入后缀表达式并计算。
  • 例如,学号172301,输入1 7 + 2 3 0 1 - + *)
  • 把运行结果截图上传。


实践六 实验名称:LinkedStack补全
实践内容:

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


实践七 实验名称: 第五章代码检查-凯撒密码
实践内容:

  • 代码检查P72-P73,凯撒密码程序。
  • 运行代码并截图,添加学号水印,上传到码云。


实践八 实验名称: 杨辉三角
实践内容:

  • 使用循环队列输出杨辉三角(本题目是选作题,总分1分,计入加分。)。
    +(1)用数组实现循环队列(要考虑扩容问题,不然不加分);
    +(2)输出杨辉三角;
    +(3)代码运行结果添加学号水印,并上传;代码传到码云,附上码云连接。


实践九 实验名称: 栈队列测试
实践内容:

  • 完成第六题的分析


实践十 实验名称: 第六章代码检查
实践内容:

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


实践十一 实验名称: 线性表实践
实践内容:

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


实践十二 实验名称: ASL测试
实践内容:

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


实践十三 实验名称: 三种查找算法练习
实践内容:

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


实践十四 实验名称:哈希冲突处理实践
实践内容:

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


实践十五 实验名称: 希尔排序测试
实践内容:

  • D2等于2时,第2趟排序结果是?


实践十六 实验名称: 树计算题
实践内容:

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


实践十七 实验名称: 树的深度和叶子个数计算
实践内容:

  • (1)参考下面叶子节点计算的伪代码,计算课本中背部疼痛诊断器中决策树的叶子节点个数?
    int CountLeaf ( BiTree T, int &count )
    { if ( T )
    { if ( (!T->lchild) && (!T->rchild) )
    count++; // 对叶子结点计数
    CountLeaf( T->lchild, count);
    CountLeaf( T->rchild, count);
    }
    }
  • (2)根据课堂介绍的递归树深度计算算法,计算决策树的深度。


实践十八 实验名称: 中序和先序计算二叉树结构
实践内容:

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


实践十九 实验名称: 层次遍历法实践
实践内容:

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


实践二十 实验名称: 堆构造与排序
实践内容:

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


实践二十一 实验名称: 堆排序测试
实践内容:

  • 根据关键字序列:36,30,18,40,32,45,22,50,利用数组构造一颗大顶堆,并排序。
    要求:
    (1)输出构造好的大顶堆序列(层序);
    (2)输出每轮排序的结果(数组的结果);
  • 把结果截图并加学号水印上传到蓝墨云,代码上传到码云。


实践二十二 实验名称: 十字链表练习
实践内容:

  • 画出十字链表结构


实践二十三 实验名称: 最小生成树
实践内容:

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


实践二十四 实验名称: Dijkstra(迪杰斯特拉)算法测试
实践内容:

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


实践二十五 实验名称: AOE练习
实践内容:

  • 一、求关键路径,v1和ve的值并写出具体步骤
  • 二、画出图一可能的拓扑序列
  • 三、画出图二所示无向图的邻接矩阵、邻接链表,并列出深度优先和广度优先遍历图所得的顶点序列。
  • 四、写出图三的邻接矩阵,并用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)把实验结果截图上传到云班课

课堂实践对提升应用能力有帮助吗?

固然有帮助,虽然和上学期相比,多了不少,也难了不少,可是与写博客相比,感受要好的多。课堂实践有在课堂上完成的,也有在课下完成的,但基本上十贴合最近所学的内容,让咱们加以练习的,在巩固所学内容的同时,也会给咱们对于知识的一些拓展。手动与理论相结合,这才可让知识为咱们所吸取。

课堂实践上本身有什么经验教训?

首先,必定要及时完成实验,在规定时间内完成,若是被罚写博客,又会占用本身的其余时间,其次,在作实践的同时,咱们会感受到本身对这些知识的了解程度如何,若是很差,借此机会咱们能够再复习一遍。

课堂实践上对老师有什么教学建议?

和上学期有所不一样,咱们实践这学期的要更多一些,并且有了一些复习的东西,例如隔了很久,忽然布置一篇老早之前的东西,让咱们有些措手不及,其实没啥建议,课堂实践与实验感受愈来愈接近,没啥区别了。

课程收获与不足

本身的收获(投入,效率,效果等)
+ 这学期的收获其实也是蛮多的,数据结构的知识接触,团队项目设计的全过程参与,反正学到了不少东西。之前的我以为一个Android项目的实现,不就和咱们假期中同样,本身找方法,本身一我的编,最后只要成品出来就能够了,可是,通过此次团队编程实践,我知道了还要作不少东西,全部要作的和想要实现的都得让咱们提早去规划,提早去作好计划,整个项目不能像本身作那样,难一点实现的就跳过,或该计划,这些都是项目完成中的大忌。并且,必定要按照时间计划中的作,稍有不慎,就会影响整个进度,以至于没法完成。 + 在这学期最后节程序设计与数据结构课以前一晚,咱们团队熬了个通宵,为的是咱们项目最后的实现,我以为这并不值得高兴,由于最后的展现中咱们出了不少的问题。这些值得反思,值得咱们团队全部成员的反思。
本身须要改进的地方
不足有很好更多,知识的不扎实,以至于有些代码里的某些部分我不知道是干吗用的,项目作的少,对于知识无法巩固和复习,有的时候,懒惰和情绪能给我带来好多麻烦,因此,之后要控制情绪,也要有更合理的时间安排和规划。

问卷调查

你平均每周投入到本课程有效学习时间有多少?
天天平均应该有3个小时时间在学习Java,因此一周大概20个小时左右,有时一周项目难一点,章节多一点或许能够达到30个小时。
每周的学习效率有提升吗?你是怎么衡量的?
每周的任务不一样,难度不一样,因此学习效率真的感受无法评定。
蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
有的,资料不少,有些仍是有用的,并且经过其布置做业,提交做业都很方便,手机端,pc端都挺好用的。
你以为这门课老师应该继续作哪一件事情?
课堂实践
你以为这门课老师应该中止作哪一件事情?
没啥须要中止,都挺好的。
你以为这门课老师应该开始作什么新的事情?
- 上课可以讲再细致一点,由于有时候没有彻底听懂。 - 多开导咱们的思惟方式。

总结中涉及到的连接的二维码

码云项目连接: 二维码

课程总结

实验报告

团队博客

相关文章
相关标签/搜索