
数据结构(C)
文章平均质量分 50
青山是哪个青山
这个作者很懒,什么都没留下…
展开
-
B树的简单实现
【代码】B树的简单实现。原创 2024-11-20 15:14:18 · 466 阅读 · 0 评论 -
图的最短路径算法
【代码】图的最短路径算法。原创 2024-10-09 23:01:15 · 156 阅读 · 0 评论 -
最小生成树Prim和Kruskal算法
【代码】最小生成树Prim和Kruskal算法。原创 2024-10-09 22:59:45 · 135 阅读 · 0 评论 -
图的广度优先遍历和深度优先遍历
【代码】图的广度优先遍历和深度优先遍历。原创 2024-10-09 22:58:01 · 144 阅读 · 0 评论 -
图的模拟实现
【代码】图的模拟实现。原创 2024-10-09 22:55:23 · 157 阅读 · 0 评论 -
并查集的模拟实现
【代码】并查集的模拟实现。原创 2024-10-07 23:08:22 · 232 阅读 · 0 评论 -
数据结构——排序
大部分内部排序算法只适用于顺序存储的线性表。原创 2023-06-21 23:15:20 · 547 阅读 · 0 评论 -
数据结构——查找
若左子树非空,则左子树上所有结点的值均小于根结点的值;若右子树非空,则右子树上所有结点的值均大于根结点的值;左右子树也是一棵二叉排序树==(左小右大)==对二叉排序树进行中序遍历就得到一个递增的有序序列。原创 2023-06-20 21:46:32 · 1851 阅读 · 0 评论 -
数据结构——图
图G由顶点集V和边集E组成,记为G=(V,E);|V|表示顶点个数,|E|表示边的条数线性表可以是空表,树可以是空树,但是图不能是空图。原创 2023-06-17 00:04:29 · 833 阅读 · 0 评论 -
数据结构——串(字符串)
串是由零个或多个字符组成的有限序列,可以是字母,数字或者其他字符由一个或多个空格组成的串称为空格串(空格也是一种符号)如“hello world 232@#%^&”原创 2023-06-11 22:29:53 · 755 阅读 · 0 评论 -
数据结构——栈,队列和数组
实际上是一个同时带有队头指针和队尾指针的单链表,头指针指向队头结点,尾指针指向队尾结点,即单链表的最后一个结点。分配一块连续的存储单元,设两个指针,队头指针front指向队头元素,队尾指针rear指向队尾元素的下一个位置。判空可以用Q.front=Q.rear,但是满队时也有Q.front=Q.rear,如图。队尾指针进1:Q.rear=(Q.rear+1)%maxsize。Q.front==NULL,Q.rear==NULL时队列为空。tag=0,若因删除导致Q.front==Q.rear,队空。原创 2023-06-09 23:12:23 · 618 阅读 · 0 评论 -
数据结构——绪论/线性表
线性表是具有相同数据类型的n个元素的有限序列,是一种。原创 2023-06-08 22:42:01 · 323 阅读 · 0 评论 -
插入排序的实现
直接将数组中的每两个数据进行对比,大的往后移动,直到移动到没有比该数据大的,再用原数据进行替换,代码如下。gap>1时都是预排序,让数据接近有序,当gap==1时,就是直接插入排序,数据完全有序。首先进行预排序,每隔三个数据进行比较,最后每个数据进行直接插入排序。由于是数据内的数据进行对比,所以不能i不能取最后一个数据的坐标。由于数据的个数无法确定,所以用gap=n来规范大小。时间复杂度O(N^1.3),空间复杂度O(1),不具有稳定性。时间复杂度O(N^2),空间复杂度O(1),具有稳定性。原创 2022-09-26 22:09:25 · 440 阅读 · 0 评论 -
二叉树的实现(C语言)
如果数组a【*pi】不为空,就开辟空间来存储a【*pi】,同时(*pi)++。然后依次根据左子树,右子树来递归建立树,遇到空时返回。只有遇到叶子节点的时候才会返回1,这样左右子树层层返回相加,最后计算出叶子节点个数。用lh和rh来比较大小,这样更深一层的树就会显示出来,包含了浅一层的树。也是依次层序遍历,然后在最后一层判断遇到空后是不是一直为空。由于树是链表结构,所以用递归来依次释放节点。二叉树是采用链表的结构来实现。在访问左右子树前先打印该节点。依然采用递归来计算节点个数。其中包含了队列的使用方式。原创 2022-09-11 16:10:39 · 2738 阅读 · 1 评论 -
队列的实现(C语言)
插入新数据首先要开辟空间建立一个新的结构体,然后在尾部插入data。如果是第一个数据,head和tail就会指向同一位置,如果不是,tail需要往前移动到newnode的位置,最后size++。首先判断队列是不是为空,如果只有一个数据时,删除后head和tail都需要指向空。注意删除的是先进入队列的数据,最后size--。队列依然用单向链表实现,同时需要另一个结构体表示头尾指针,队列是一种先进先出的数据结构。如图为队列数据的大致思想,关于head和tail指向不同位置的数据。6.返回head位置的数据。原创 2022-09-11 10:57:25 · 507 阅读 · 0 评论 -
栈的实现(C语言)
首先判断容量是否充足,如果已经满容量,先进行扩容。然后让a指向新开辟的空间,让容量大小变成newca,最后在ps->top位置插入x,然后top++。我们是用顺序表的结构来实现栈 ,栈是一种数据先进后出,后进先出的数据结构。首先判断ps,以及ps是否为空,然后直接top--。把a指针指向空,数据个数和容量初始化为0。因为已经为a开辟了空间,所以需要释放。原创 2022-09-11 10:25:39 · 557 阅读 · 0 评论 -
数据结构带头双向循环链表
插入数据需要用到创建链表结构数据,同时也可以用到查找数据时返回的位置,可以直接使用头位置来头插或者尾插。直接让上下两个链表的指针相连,再释放该链表。找到后就返回数据的位置,没有就返回空。1.带头双向循环链表的画图结构。3.查找某一个数据的位置。......原创 2022-08-05 11:41:16 · 128 阅读 · 0 评论 -
数据结构动态顺序表的实现(增删查改)
如果数据已经填满了内存容量,则需要扩容,一般只有增加数据时需要检查。注释的是一般实现方法(下同),SLInsert为统一的方法。容量只会增加,所以只有当数据个数等于容量个数时才会实现函数。头部插入数据时需要把后续的数据依次往后移动一个单位。每次增加两个数据容量的内存,如果扩容失败会报错。尾部插入时表示数据已经满了,需要扩容后添加。要避免出现没有数据仍然删除的失误。10.任意位置统一的插入数据。11.删除任意位置的数据。12.修改任意位置的数据。1.构建简单的结构体。...原创 2022-08-01 17:37:15 · 171 阅读 · 0 评论