代码改变世界

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

2019-12-22 15:54  BBIowa  阅读(267)  评论(0编辑  收藏  举报

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

  • 课程:《程序设计与数据结构》
  • 班级: 1823
  • 姓名:赵天昊
  • 学号:20182327
  • 教师:王志强
  • 必修/选修: 必修

(按顺序)每周作业链接汇总

第一周作业:

  • 配置linux虚拟机、环境、学习git和单步调试

第二周作业:

  • 输入两个数,计算两个数的加、减、乘、除运算结果,并输出。
    要求:(本题6分)
    (1)把运行结果截图加水印学号传到蓝墨云(要求截全屏)
    (2)把代码git上码云上(码云无代码不得分)
    (3)用JDB单步调试到某一行代码,例如乘法操作,截图全屏加水印学号上传到这里。

第三周作业:

  • 课堂实践(课下):生成-10~10之间的随机数(1.5分),并格式化输出(0.###)(1.5分)。
    本题3分。
    要求:
    (1)结果正确。
    (2)截图上传+水印学号
    (3)代码传码云
  • 编写一个Book类,其实例数据分别表示书名、作者、出版社以及版权日期。定义一个Book构造方法,接收并初始化实例数据;为所有实例数据定义获取和设置他们的方法;定义一个toString方法,返回几行描述该图书的字符串。创建一个Bookshelf驱动类,其main方法实例化并输出一些Book对象。

第四周

  • 接口测试(Interface)(本题3分)
    定义一个接口People,并定义另外一个Student类,实现该接口。
    并做简单的测试(StudentTest)。
    要求:
    (1)git push码云
    (2)定义接口,实现并测试。
    (3)当堂完成,课后完成无分

第五周

  • 编写支持复数和有理数(分数)的计算器(本题6分,根据实际情况酌情扣分):
    (1)可以选择复数或有理数的计算,也可以选择“退出”;
    (2)复数类要求必须implements Comparable接口,并比较两个复数的大小;
    (3)要求用WhiteStarUML画出UML图,加学号传到蓝墨云上;
    (4)要求使用IDEA把代码git到码云上;

第六周

  • 参考云班课资源中的FileTest文件
    学习字节流和字符流,要求能够实现创建文件,采用四种方法写入和读取文件(每种方法都要上传结果截图)
    采用一种方法将任意两个复数写入文件,再将这两个复数读取出来
    读取后做加运算,将得到的结果再写入文件
    将代码git至码云,附上截图和码云链接(链接必须必须要精确到具体文件或文件夹!!!!)



第七周

  • 完成课本中ArrayStack类的实现,特别是完成peek、isEmpty、size和toString方法的实现,并完成四个方法的测试。
    (评分4分,包括4个方法的实现和测试,每个方法的实现和测试占1分,缺少实现或测试均扣除0.5分)
public T peek() throws EmptyCollectionException
   {

   }
   public boolean isEmpty()
   {
       // To be completed as a Programming Project
   }

   public int size()
   {
       // To be completed as a Programming Project
   }

   public String toString()
   {
       // To be completed as a Programming Project
   }

  • 从命令行输出一个后缀表达式:
    7 4 -3 * 1 5 + / *
    利用栈计算该表达式的值。
    (本题5分,在android上实现可得7分,android上可以直接输入表达式,不必用命令行参数传入后缀表达式)

第八周

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

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

第九周

  • PP15.2完成CircularArrayQueue类的实现,包括所有的方法。
    注意:要求通过入队和出队操作,出现队空和队满的情况。

  • 学习ArrayList和LinkedList类,并在Android平台上实现添加、删除、修改等操作(数据可以自己定义)(3分),并实现倒置(3分)。
    倒置的意思就是:1 2 3 4 5 变为 5 4 3 2 1
    注意:本题6分。

  • 给定关键字序列19 14 23 1 68 20 84 27 55 11 10 79,试分别用顺序查找、折半查找、二叉排序树查找、散列查找(用线性探查法和链地址法)来实现查找。试画出它们的对应存储形式(顺序查找的顺序表,二分查找的判定树,二叉排序树查找的二叉排序树,两种散列查找的散列表),并求出每一种查找的成功平均查找长度。其中,散列函数H(k)=k%11。
    本题10分,根据实际情况扣分。

  • 给Searching类添加二分查找算法的递归实现方法。创建驱动程序来演示这个实现机制。
    (1)编程实现递归
    (2)创建一个测试类,测试递归实现的二分查找是否正确。

第十周

  • (1)给定一个序列AB#CD###E#F##建立一颗树,根据“二叉树的生成”算法构造这颗树。(3分)
    (2)使用层序遍历方法完成遍历并测试(3分)。
    评分标准:
    (1)课堂完成,正确,6分。
    (2)课堂没有完成,或者课堂完成的不正确,需要课下补实践和博客,根据情况最多3分。

第十一周

  • 建立一颗二叉排序树,样例如附件所示。完成:
    (1)创建二叉排序树
    (2)查找一个元素,包含查找成功和失败的例子;
    (3)插入2个元素,1个插入到左子树,1个插入到右子树;
    (4)删除一个元素,要考虑不同情况。
    本题8分!

  • 设有字符集: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)把实验结果截图上传到云班课
    满分:8分。
    酌情打分。

第十二周

  • 图的存储表示以及计算结点的度。
    (1)定义有向图和无向图(把附件图中的箭头去掉)的顶点矩阵和邻接矩阵,并计算每个结点的入度和出度。(3分)
    (2)定义有向图的带权临街表,并计算每个节点的出度(2分)

第十三周

  • 编程实践:
    (1)编写代码初始化有向无环图和有向有环图(见附件1和2),使用邻接表初始化图(3分)。
    (2)使用堆栈实现拓扑排序算法,输出附件1图的拓扑排序序列且没有环,检测附件图2存在环(4分)。


自认为写得最好一篇博客是哈夫曼的实现

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

(按顺序)实验报告链接汇总

(按顺序)团队项目报告链接汇总

  • 第一周:一款可以在游戏外帮你模拟抽卡等抽奖活动的app,让你不用花钱就能知道达到预期的真实预算,让你认清可怕的现实及时把你氪金的欲望扼杀在萌芽中
  • 团队作业第一周(https://www.cnblogs.com/ly20182313/p/11925034.html)
  • 第二周:第一周进行项目开发,对于项目的了解还不够深入,对于app的整体结构构造的不够完善,经过这次的后端架构,重新做出了修改
    上周的需求规格说明书在格式上存在问题,提交上去之后图片显示以及布局都存在误差,这周找到了正确的方法进行了修改
  • 团队作业第二周(https://www.cnblogs.com/ly20182313/p/11967636.html)

代码托管链接:

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


  • 代码突破第一次要求的6000行和第二次的要求10000行

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

  • 就像我国自行研制航空母舰一样,都是从改装到仿制,最后才能从钢板到飞机都是自主生产建造,敲代码也一样。多加一点多改一点,最终才可以独立完成完整的代码。

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

  • 虽然有时间限制,但也在规定时间内完成了。
  • 还是得反复推敲逻辑是否正确,在代码无误时逻辑错误是最烦人的,比如各种空指针。

课堂项目实践

  • 参考2018-2019-1 《Java 程序设计》课堂实践项目

  • 课堂实践链接(没有的可以不列)

  • 实践名称:课堂实践-Scanner&JDB练习、时间复杂度分析、出门条-栈-数组实现栈、链表插入、快速排序测试(必须有中间过程)、选择排序最坏情况、树-计算题、中序和先序计算二叉树结构、堆排序过程测试、堆排序过程测试、图的DFS和BFS测试、考试安排冲突问题(画图)、最小生成树测试、Dijkstra(迪杰斯特拉)算法测试、AOE/AOV练习

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

  • 课堂实践上自己有什么经验教训?
    不敢打瞌睡,不然实践不会

  • 课堂实践上对老师有什么教学建议?
    强哥很优秀很完美

  • 课程收获与不足
    就像我国自行研制航空母舰一样,都是从改装到仿制,最后才能从钢板到飞机都是自主生产建造,敲代码也一样。多加一点多改一点,最终才可以独立完成完整的代码。还是得反复推敲逻辑是否正确,在代码无误时逻辑错误是最烦人的,比如各种空指针

  • 自己的收获(投入,效率,效果等)
    同上

  • 自己需要改进的地方
    全方面都得继续努力

  • 结对学习是不是真正贯彻了?写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议
    同学往往可以找到我思维辐射不到的地方给出让人耳目一新的编程思路。

问卷调查

  • 你平均每周投入到本课程有效学习时间有多少?
    20-30小时
  • 每周的学习效率有提高吗?你是怎么衡量的?
    有,看提交作业时间提前deadline多久,越久越好
  • 蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?
    有,无意见建议
  • 你觉得这门课老师应该继续做哪一件事情?
    发棒棒糖
  • 你觉得这门课老师应该停止做哪一件事情?
    强哥不要停下来啊强哥

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

  • 码云项目链接:

  • 预备作业1:

  • 第一周作业:

  • 第二第三周作业:

  • 第四周作业:

  • 第五周作业:

  • 第六周作业:

  • 第七周作业:

  • 第八周作业:

  • 第九周作业:

  • 第十周作业:

  • 实验一 实验名称:课堂实践-Scanner&JDB练习:

  • 实验二 实验名称:Random和NumberFormat测试:

  • 实验三 实验名称:实验三 面向对象程序设计1-5:

  • 实验四 实验名称:Java Socket编程、Java和密码学、编写有理数/复数计算器、远程有理数计算器、远程复数计算器:

  • 实验五 实验名称:Android程序设计1-5:

  • 实验六 实验名称:线性结构之链表1-5:

  • 实验七 实验名称:查找与排序1-5:

  • 实验八 实验名称:实现二叉树、决策树、中序先序序列构造二叉树(例子中的后序为先序)、表达式树:

  • 实验九 实验名称:图: