数据结构课程大总结

本学期开了数据结构这一门课程,跟随贺利坚老师以及他的翻转课堂,让我学会了很多,初步了解了数据结构,懂得了算法设计的一点基础。

时间已至学期末,现采用ORID方法进行总结:

O:数据结构一书第一章带我们初步认识数据,了解其存储结构和逻辑结构以及算法和算法的性能分析,接下来的内容就是详细的讲解了各种数据的存储和逻辑结构,以及其功能的应用。第二章讲解了线性表,是一种很典型的线性结构,其存储结构可分为顺序(即顺序表)和链式(即链表)两种,还可延伸出单链表 ,双链表和循环链表。第三章讲解了栈和队列,可以说是两种操作受限的线性结构,其存储结构也可分为与线性表相等的两种,栈和队列在某些符合其特点的情况下具有很好的作用。第四章讲解了串结构,,是由字符元素组成的,其存储结构可分为顺序串和链串,串的模式匹配中有一种很经典的算法——Brute-Force算法。第六章学习了数组中的特殊矩阵的压缩存储,利用特殊矩阵的规律对它们进行压缩存储,以提高存储空间效率。还学习了稀疏矩阵的三元组表示,极大简化了稀疏矩阵的表示方法。到此为止,以上的数据结构都为线性结构,接下来的七八章讲解了树结构和图结构,才是重中之重。树结构中的主要学习了二叉树结构,其顺序和链式存储,二叉树与树、森林之间的转换,二叉树的基本运算以及二叉树的先序、中序和后序遍历方法,还有二叉树的延伸——线索二叉树以及哈夫曼树。图结构主要讲解了图的存储方法、图的各种遍历方法、生成树和最小生成树问题以及最短路径问题,并且延伸了拓扑排序和AOE网与关键路径问题。第九章介绍了查找的几种方法,包括线性表查找的顺序、折半、索引和分块查找,树表中的二叉排序树、平衡二叉树和B-树以及哈希表的查找。第十章介绍了排序方法,包括插入排序,冒泡排序,快速排序,选择法排序,堆排序,归并排序以及基数排序,并且对集中排序方法进行了比较和选择。

R:本学习我对本门课程的掌握程度我认为不够扎实,我在许多难点的地方没有做到尽力去攻克,放到最后越积越多。在树结构和图结构的学习中,由于内容太过于冗杂庞大,我没有耐心的一点一点的掌握。所以我需要改变学习方法,在老师发布学习任务以后的第一时间就要进行初步的预习,并且找出重点和难点,然后在下一次的学习中,集中精力去攻克难点,掌握重点,最后把握整体,做到把知识掌握牢固。

I:通过对每一个知识点和难点的反复研究和琢磨,把每一个知识点都理解透彻,遇到久攻不下的难题,就要想办法解决,可以通过网络搜索资源,也可以询问老师。多与同学之间交流探讨或许可以得到新的启发和认识,与老师之间多交流,可以扩大自己的眼界。

D:从我自身来说,算法的功能之强大现在我或许感受没有那么深刻,但是通过老师的讲述,我能感觉到厉害之处。就我个人的角度,我认为算法之所以如此重要,是因为它对数据运行的时间和空间的充分利用,即根据各种数据的特点选择适合这种数据存储和运算的结构,进而减少数据存储的空间消耗和数据运行的时间。这些在工程量小的项目上或许体现的不是很明显,但是一旦运用到大工程,其所减小人力和财力的消耗就是显而易见的了(仅仅是个人观点,如有错误,请包涵)。所以,学好数据结构一课尤其重要。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、设计目的 本课程设计旨在通过实现一个大整数计算器,帮助学生深入理解数据结构的相关知识,掌握大整数的存储、运算等基本操作,提高编程能力。 二、设计内容 1.需求分析 大整数计算器需要支持以下功能: (1)大整数的输入输出 (2)大整数的加、减、乘、除运算 (3)大整数的比较大小 (4)大整数的求绝对值 (5)大整数的取模运算 2.数据结构设计 (1)大整数的存储 由于大整数可能会超出计算机所能表示的范围,因此需要使用链表来存储大整数。每个节点存储一个位数,节点之间通过指针连接。 (2)大整数的加、减、乘、除运算 加法:从低位到高位分别相加,若有进位则向高位一位加1。 减法:从低位到高位分别相减,若有借位则向高位一位减1。 乘法:将一个大数分解成若干个数,每个数与另一个大数相乘,然后将结果相加。 除法:将被除数和除数转换为整数,然后进行长除法运算。 (3)大整数的比较大小 从高位到低位比较每一位,若某一位不同则可以确定大小关系。 (4)大整数的求绝对值 将负数取反。 (5)大整数的取模运算 将被除数除以除数,求出余数。 3.算法设计 (1)大整数的加法 1.从低位到高位分别相加,若有进位则向高位一位加1; 2.若两数位数不等,则将短数的高位补0,使两数位数相同; 3.若最高位有进位,则需增加一位,将进位加在最高位。 (2)大整数的减法 1.从低位到高位分别相减,若有借位则向高位一位减1; 2.若被减数小于减数,则需向高位借位; 3.若减数的最高位为0,则需去除前导0。 (3)大整数的乘法 1.将一个大数分解成若干个数,每个数与另一个大数相乘,然后将结果相加; 2.从低位到高位依次计算,每次计算结果存储在一个临时变量中; 3.每次计算结束后,将结果加到最终结果中。 (4)大整数的除法 1.将被除数和除数转换为整数,然后进行长除法运算; 2.从高位到低位依次计算,将计算结果存储在一个临时变量中; 3.每次计算结束后,将结果加到最终结果中。 三、实现方法 1.使用C++语言实现。 2.使用链表存储大整数,每个节点存储一个位数,节点之间通过指针连接。 3.实现大整数的加、减、乘、除运算,比较大小和求绝对值等基本操作。 4.使用测试用例验证程序的正确性和鲁棒性。 四、总结 通过本课程设计,我深入理解了数据结构的相关知识,掌握了大整数的存储、运算等基本操作,提高了编程能力。同时,也感受到了编写高效、鲁棒的程序的重要性,这对我今后的学习和工作都有很大的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值