2023-2024 20231313《计算机基础与程序设计》第七周学习总结
2023-2024 20231313《计算机基础与程序设计》第七周学习总结
作业 | 速达 |
---|---|
作业课程 | 班级链接 |
作业要求 | 计算机基础与程序设计第七周学习总结 |
作业内容 | 计算机科学概论第8章 《C语言程序设计》第6章并完成云班课测试,数组与链表、基于数组和基于链表实现数据结构、无序表与有序表、树、图、子程序与参数 |
作业正文 | 我的作业 |
教材总结
总结
《计算机科学概论》:计算机中存在抽象的容器——>抽象数据类型,其能够将属性与特定明确的分开;其次是栈,只能从上方进行相应操作,遵循后出后进的原则;再次是队列,从一段进另一端出;而列表则比较复杂,他是链式结构,以节点(用户的数据和指向下一个节点的链接或指针)为基础;树,树的分层结构相比栈、队列和链表更为复杂;图,图可以看作是是在某些方面解除限制的树,是由节点和连接节点的线段构成;子程序,与之前谈及的子算法相似;
《C语言程序设计》:本章讲的主要是循环,for while do-while 流程转移控制 条件控制 嵌套循环 穷举和软件调试方面的问题
学习过程中的问题
对于队列和树等抽象的概念难以把握,对于不同数据结构和算法难度的特点是慢慢理解的,以及算法想象中很好,但存在实现问题和性能不佳
《计算机科学概论》第八章
抽象数据类型
抽象数据类型,简称ADT,他将由数据和操作构成的属性和特定实现分离,每个ADT存有特定行为时就变成了容器
栈
栈,最为重要的特点就是后进先出,也就是只有一个入/出口,如该伪代码执行后的结果是倒序的而并非正序输入的顺序
队列
队列,则是与栈相反,他讲究的是后进后出,再如该伪代码执行后的结果与上面结果则是相反的
列表
列表,列表的列是无穷的,他有三个属性特征:项目是线性的、同构的、变长的,同时需要注意的是列表不是数组,数组是内嵌结构,数组内可以应用列表,有无序算法区别在于输出顺序的不同
树
树,是个较大的概念,包含很多“小树”,有二叉树,二叉检索树,和有关树的一系列算法,二叉树是一种比较常见的抽象概念,包含唯一的根节点和各种子节点,每个节点可以有左右子树,根节点与子节点之间只有一个路径,一种特殊的节点是叶节点,他是没有子女的树节点;
二叉检索树,二叉检索树树与二叉树的区别在于他的节点存在语义排序,并且存在严格的规定,任何节点的树必须比左子树的数大,比右子树的数小;在树中的搜索也是在检索树中完成的,给出一个数,先于根节点比较,初步判断位置大面上的左右子树,然后再从相应位置继续与相应的根节点比较,以此类推,所以存在一个搜索算法用于搜索;但若没有二叉检索树的情况下,则需要自己构建一个,基本的原则就是插入值按照检索树的规则来进行排序,需要用到insert函数来实现插入,在输出的时候也采用相同的递归算法,达到目的的同时又实现了简短精致;
图
图,某种意义上可以看作是解除了节点数量限制的树,在此基础上,有一组组节点和节点间的线段构成,节点叫做顶点,线段叫做边,顶点表示对象,边表示了对象之间的关系,所以图又可以分为有向图和无向图,无向图的边没有方向,有向图则是固定的由某一方向指向另一个方向;
图的创建,可以从构建表格开始,先添加顶点,再添加边,最后添加权值;
图的算法,有关图的算法有三种,深度优先搜索、广度优先搜索、单源最短路搜索;
深搜DFS,遵循按深度最大来进行,选择一条路尽可能深入,走到头,就是说该点没有其他节点了,再回退到上一个节点,继续探索该节点的其他支路,就该支路继续深入,以此类推的遍历方法;
广搜BFS,遵循范围最大的原则来进行,按照层级结构,一层一层来进行,完成第一层的遍历后,再进行第二层,第三层...依此类推,最终遍历完成,将所有元素都过了一遍;
单源最短路搜索,需要与权值有关,是经计算后的每个路径的权值和进行比较,然后挑选出一个权值最小的路径,其中需要用到迪杰斯特拉算法颇有难度,但同时这种搜索在如今的生活中应用的也是最多最广的,像诸多地图软件中的两点距离路径的寻找,则就可以将地图抽象为一张图,然后进行单源最短路搜索即进行其他算法与迪杰斯特拉算法的结合,得出结论
《C语言程序设计》第六章
循环
while
while语句中的循环控制表达式是在执行循环体之前进行测试的,执行前需先进性括号内表达式true false的判断
do-while
do-while语句中的循环判断条件是在执行后进行的,不论条件的真假,都要先进行一次循环体语句。在使用时,也许格外注意这一点
for
for循环是写出程序过程中,应用最多的,基本形式为括号内有三种语句,由两个分号隔开,第一个为循环变量及其初始化,第二个是循环控制的条件,第三个是循环变量的增量,由以上三者决定了循环的次数,
其余的循环
计数控制的循环,事先知道循环次数的循环叫计数控制循环,累加累乘求和的问题就是需要用到他来实现;嵌套循环,虽然会增大时空复杂度,但是可以处理多层次的问题以及减少过多的重复代码;条件控制的循环,循环次数未知的循环由一个条件控制叫条件控制
流程的转移控制
goto
goto是无条件的语句,功能极其强大,可以向任意方向跳转,但虽表示无条件跳转,但一般与if连用,也可以不用,如在实验二中我使用到goto实现无条件的跳转进行错误数过多重新计算的步骤
break
break可以用作退出所有循环的语句,只要碰到他,循环立刻停止,
continue
continue与break的区别在于,continue在于跳出当前本次循环,整体循环并不终止,重新返回上方重新进行
基于AI的学习
代码行数(新增/累积) | 学习时间(新增/累积) | |
---|---|---|
目标 | 2000行 | 100小时 |
第一周 | 50/50 | 2/2 |
第二周 | 50/50 | 2/2 |
第三周 | 50/50 | 2/2 |
第四周 | 50/50 | 2/2 |
第五周 | 300/300 | 2/2 |
第六周 | 300/300 | 2/2 |
第七周 | 200/200 | 1/1 |