- 博客(17)
- 收藏
- 关注
原创 数据结构之递归
若一个函数、过程或者数据结构定义内部又直接(或间接)出现定义本身的应用,称他们为递归。/***/int addTo(int paraN){//理解每次出栈的过程return 0;} else {}//Of if/***/int clearAddTo(int paraN){//空间复杂度O(n), 时间复杂度O(n)return 0;n = 5;n = 1;n = -1。
2023-06-12 19:09:51 90 1
原创 大作业二之哈夫曼编码应用
2. 代码主要涉及到数组,指针和结构体。数组用于存储字符出现的频率和哈夫曼树的节点。一般来说,数组和指针比较节省空间和提高访问效率,结构体比较占用空间和降低访问效率。5. 代码没有对输入进行有效性检查,也没有对内存分配进行错误处理。第一层循环是遍历字符串统计每个字符出现的频率,时间复杂度为。为出现过的字符个数。第二层循环是对节点数组进行排序和合并,时间复杂度为。3. 代码使用了一些优化方法来提高执行时间和空间占用的效率,使用。为出现过的字符个数。综合起来,代码的时间复杂度为。为出现过的字符个数。
2023-06-12 19:03:58 152
原创 图的遍历:深度and广度
从图的某一顶点出发,按照某种搜索方式对图中所有顶点访问一次且仅一次。图的遍历可以解决很多搜索问题,在实际中应用非常广泛。图的遍历根据搜索方式的不同,分为广度优先搜索和深度优先搜索。
2023-06-12 18:58:43 233
原创 邻接表及广度优先遍历
我们发现,当图中的边数相对于顶点较少时,邻接矩阵是对存储空间的极大浪费。我们可以考虑对边或弧使用链式存储的方式来避免空间浪费的问题。回忆树结构的孩子表示法,将结点存入数组,并对结点的孩子进行链式存储,不管有多少孩子,也不会存在空间浪费问题。又是一个难难难,代码还没有debug'完,没有完整代码的运行图,接下来会逐步debug找完所有问题,debug真是一件麻烦事儿!!!!
2023-06-12 18:49:46 241
原创 哈夫曼编码
如果少量的需要做哈夫曼编码我认为个人通过画图的方式来实现哈夫曼编码也是非常简单。哈夫曼编码可谓是学着简单,但一旦需要写完完整代码,简直就是难难难!
2023-06-12 18:42:35 181
原创 二叉树的建立与遍历
二叉树是每个结点最多有两个子树的树结构,常被用于实现二叉查找树和二叉堆。二叉树是链式存储结构,用的是二叉链,本质上是链表。先序遍历的过程是首先访问根结点,然后先序遍历根的左子树,最后先序遍历根的右子树。对于根的左子树和右子树,遍历的过程相同。代码如下:中序遍历的过程是首先中序遍历左子树,然后访问根结点,最后中序遍历根的右子树。对于根的左子树和右子树,遍历的过程相同。代码如下:后序遍历的过程是首先后序遍历左子树,然后后序遍历根的右子树,最后访问根结点。代码:在进行层次遍历时,对一层结点访问完后再按照它们的
2023-06-12 18:36:23 102
原创 数据结构之压缩矩阵
压缩矩阵真的在某些特殊矩阵中节省了相当大的空间,特殊矩阵有对称矩阵,稀疏矩阵等堆成矩阵通过只储存一半的元素加对角线元素节省空间,而稀疏矩阵通过只储存非零元素来实现节省空间,真的是相当的赏心悦目。
2023-06-12 18:12:04 131
原创 二维数组与矩阵乘法
二维数组可以定义成静态和动态,我们分别定义,另外实现二维数组的打印、乘积、随机生成二维数组、初始化,这些我们用动态二维数组实现,而静态其实是一样的,另外我们思考二维数组的地址。一个二维数组指针(二级)指向一片空间,这片空间存储的是每行的指针地址,有几行就有几个指针,这些指针分别指向每行的首地址(如图)。
2023-06-12 18:04:20 313 1
原创 数据结构之链队列
队列是一种先进先出的线性表,它只允许在表的一端进行插入,而在另一端删除元素。这和我们日常生活中的排队是一致的,最早进入队列的元素最早离开。通过此章节的学习,可以尝试排队呼叫系统的编程。
2023-06-12 17:51:23 58 1
原创 栈的表达式求值
int map(char tempChar) {//划分优先级。1.完成整数表达式求值。如5+(2+3)*5=?完整版代码暂时一直调试不成功。2.数字与符号分开处理。通过建立两个栈来实现。
2023-06-12 17:32:51 43 1
原创 3.2 栈的应用-括号匹配
通过栈,讲括号依次放入栈,如果不匹配就保留,如果匹配就出栈,在循环完全是括号符后,看栈是否指向我们所选择的标志符,如果是,则匹配;反之,则不匹配。
2023-04-25 12:11:08 54
原创 2.5多项式的加法
#include<stdio.h>#include<malloc.h>//构造结构体typedef struct LinkNode{ int coefficient; int exponent; struct LinkNode *next;}*LinkList, *NodePtr;//初始化链表 LinkList initLinkList(){ LinkList tempHeader = (LinkList)malloc(sizeof(struct Lin
2023-04-10 23:21:04 52
原创 2.4 静态链表
虽然在学习这方面还没有太大的提升,但是在敲了几次代码之后,很明显敲代码的连贯性,以及规范性都有了一定的提升。其次从最开始对链表的完全不懂,已经开始有了一点点起色,不至于什么都完全看不明白。突然发现我的运行结果好像有一点点错误,应该是在那个位置少了\r\n,不过现在也不好再去改了,下来再去改了在对一下运行结果。再者,虽然但是,好像还是没怎么搞懂结构体这个东西,感觉变化的有点多,有多个名称,又一直换来换去,还得专门区学一下,走捷径不学确实是行不通的。
2023-04-10 22:59:59 54 1
原创 数据结构 单链表
首先,坦白从宽,抗拒从严,不得不承认,这一节我没有学懂。上节课上课不知道这么的,竟然睡着了,我不想睡觉,但睡着了,然后我就什么也没有学到,所以我抄代码就真的只是在抄代码,不理解其中的奥秘。还有另外一点也不得不说,我好像不是特别喜欢计算机这门专业,所以上学期学习c语言的时候也只是应付,只学到了数组,字符串,指针等我自己都没有学习。但我又不是很喜欢这门专业,不知道怎么样才能去提起学习的兴趣。究其本质,还是我有一颗摆烂的心没有调整,爬山不走最陡峭的以最快速度上山,也不去弯弯曲曲的绕路上山,而是选择不上山。
2023-03-30 00:21:07 43
原创 【无标题】
这周老师给我们布置了一次作业,抄代码,是抄,但又不是抄,虽然要抄,但不能简简单单Ctrl+c,Ctrl+v,而是要自己一个一个字母地去敲,去深刻体会敲代码的体会。我觉得这样不仅给了我们一次机会去体验未来我们可能做的工作,去看自己是否喜欢计算机这门行业,也让我们更能够理解学习这门学科以后可能会面对的一些问题。如不断报错改代码,以及各种拼写的错误。还让我们明白了代码书写的规范性的重要,不然连改都改不了,只能重写全部。所以,在之后,我们更应加强规范书写代码,多多学习用英文单词来命名,而不是简单的一个字母。
2023-03-28 00:24:49 45
原创 第一次数据结构课程收获
在上这门课之前,我对计算机这门学科不算太感冒,感觉没什么兴趣,一直想找到一个属于自己感兴趣的专业,都有点排斥学习计算机相关知识,c语言也很久没有学了,就上学期学了之后就没有学了。但在上了闵帆老师上的数据结构这门课后,我感觉我开始对计算机学习有点感兴趣,我以前觉得很难的c语言学习,似乎听老师说好像没多么难,发现好像似乎也不算,好像只是以前觉得太难了就不想去学。在其他老师课上,书本似乎只是一个透明的工具,基本上上课都没这么用到书本,只是用ppt照着念,老师让我们读课本,虽然也不是很听得懂,但有了不一样的乐趣。
2023-03-23 00:53:04 61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人