自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 数据结构之图的遍历

图的遍历是对一张图中所有节点进行访问的过程。在图遍历中,我们从图中的某个节点开始,沿着边一直访问其他节点,直到访问完所有与该节点有连通关系的节点。遍历过程中需要遵循一定的遍历规则,常见的有深度优先遍历和广度优先遍历。深度优先遍历是从某个节点开始,尽可能深地访问其他节点,直到到达图的最底层,然后再回溯到上一级节点继续遍历。广度优先遍历则是逐层访问节点,先访问与当前节点相邻的所有节点,然后再访问与这些节点相邻的节点,以此类推,直到访问完所有节点为止。

2023-06-12 18:57:55 255 1

原创 数据结构之最短路径算法

Prim算法和Dijkstra算法都是解决图中最短路径问题的算法,但是它们的约束条件不同。Prim算法是一种用于寻找加权无向连通图中的最小生成树的贪心算法。它从任意一个节点出发,然后每次选取一条边,将其加入到当前生成树的集合中,并确保加入后生成的树仍然是一个连通图,直到包含所有节点为止。Dijkstra算法是一种单源最短路径算法。

2023-06-12 18:53:25 235

原创 数据结构之哈夫曼树

哈夫曼树是一种经典的数据结构,也称为最优二叉树。它被用来压缩数据,尤其是文本文件,因为文本文件有很多重复的部分。哈夫曼树是由一组权值给定的叶子节点构建而成的,其中每个叶子节点代表一个具有权值的字符。哈夫曼树的构建过程是基于贪心策略的,它将频率高的字符对应的叶子节点放在较浅的层次上,频率低的字符对应的叶子节点放在较深的层次上,从而使整个树的深度最小。哈夫曼树的构建过程需要通过反复合并两个权值最小的节点来实现,直到树中只剩下一个根节点。

2023-06-12 18:04:13 431

原创 数据结构之二叉树的构建与遍历

什么是二叉树二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。由二叉树定义得出二叉树有以下特点:每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。左子树和右子树是有顺序的,次序不能任意颠倒。即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。下面是构建和遍历二叉树的代码#include <stdio.h>#include <malloc.h>#de

2023-05-09 10:50:19 77

原创 数据结构之链队列

【代码】数据结构之链队列。

2023-04-24 15:28:30 28

原创 数据结构之栈的应用——括号匹配

通过判断栈中是否还剩下有括号就可以很容易经过一遍遍历就解决问题。

2023-04-24 15:21:30 21

原创 数据结构之汉诺塔问题深入分析

上次我们学习了汉诺塔问题的代码,但是递归问题理解较难,所以这篇文章来进一步分析汉诺塔问题的代码。

2023-04-24 14:38:38 150

原创 数据结构之线性表的总结

顺序结构的特点:可以通过索引直接查找某个位置的元素,且时间复杂度为O(1),但由于数组在一开始会设定大小,因此顺序表的存储是有限且有唯一上限的。并且因为顺序表是用数组实现的,所以在进行插入和删除操作时需要移动大量元素,效率较低。链式结构的特点:只要系统的存储空间足够,就能够一直存储,理论上是无限的,但由于链表的结构体中只记录下个节点的指针,所以在查找时只能进行遍历查找,时间复杂度为O(n),查找的效率远远低于顺序表。

2023-04-24 09:30:12 35

原创 数据结构之汉诺塔问题

汉诺塔问题是一道经典的递归问题,通过研究汉诺塔问题,能够对递归有一个更深刻的理解。

2023-04-19 22:00:24 105

原创 数据结构之用链表实现的多项式的加法

经过我的调试,发现这里的问题实际上就是因为没有判断q非空,因为上面实际上是可能出现这种情况的,所以只需要加入一个if语句判断非空即可。查阅资料发现可能是由于未初始化引起的,内存中有其他数值。具体表现为调试运行的结果正常合理,而直接运行的结果往往只能打印一半或者有大段空行,这显然不符合计算机的严谨。一就是96行和第104行的代码,对于先赋值p->next再赋值p的地方很不理解,感觉没有必要;二是最 奇怪的事情,就是这段代码在调试运行的时候 和 直接运行的时候的结果是不同的!另外,还有两个地方,

2023-04-10 21:22:41 27

原创 数据结构之静态链表

不过通过对静态链表的学习,只要将其掌握,那么对于计算机更加底层的东西将会有更深刻的理解。静态链表其实就是自己管理的动态链表,需要自己分配空间,更考验对计算机内存的理解。

2023-04-05 17:21:23 44 1

原创 数据结构之单链表

我们可以发现 指向一个节点的指针实际上是指向这个链表中的第一个元素,这一点和数组很相似,因为一个指向数组的指针实际上同样指向的是这个数组的第一个元素。因此 结构体的大小都是结构体中最大基本数据类型所占字节数的整数倍,多开辟出来的空间则置空。而且还要注意的一点是,这些多出来的空间也可以存储元素。同时,出现了另一个问题:对一个数组,存储的元素类型一致,因此整个数组的大小很容易就能计算出来;因此,一个结构体也可以看成是其中存储不同类型元素的特殊的数组,因为在结构体的内部,元素之间的地址也是连续的。

2023-03-29 22:18:09 41

原创 数据结构之线性表

这节课上主要进行了线性表的学习,下面是线性表的有关操作代码和运行结果。

2023-03-26 11:54:09 34

原创 初识数据结构

在课堂上先是学习了什么是数据结构,对其有了一个初步的认识,在第一节课也是先进行了绪论部分的学习。

2023-03-22 21:56:35 29

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除