
数据结构
文章平均质量分 67
跳进黄河洗不清女士
游戏开发爱好者
展开
-
数据结构——快速排序
快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个,通过该分界值将数组分成左右两部分。(2)将分界值的数据集中到数组分界值的数据集中到数组的。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。(3)然后,左边和右边的数据可以****。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。(4)重复上述过程,可以看出,这是一个递归定义。原创 2023-06-12 17:13:50 · 138 阅读 · 0 评论 -
图的应用——最短路径(Dijkstra算法)
从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路径。解决最短路的问题有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法等。我使用的是Dijkstra算法来计算最短路径。原创 2023-06-12 16:34:06 · 756 阅读 · 1 评论 -
哈夫曼树及其编码
哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数}。树的路径长度是从树根到每一结点的路径长度之和,记为WPL = (W1L1+W2L2+W3L3+…+WnLn),N个权值Wi(i=1,2,…n)构成一棵有N个叶结点的二叉树,相应的叶结点的路径长度为Li(i=1,2,…n)。可以证明哈夫曼树的WPL是最小的。原创 2023-05-15 22:28:33 · 695 阅读 · 1 评论 -
c语言实现链队列
相信大家都知道队列是什么吧。队列是一种先进先出的线性表,它是在表的尾部插入结点,在表的头部删除结点。队列在我们日常生活中无所不在。例如在食堂排队吃饭、在医院排队挂号等等。那什么是链队列呢?用链表表示的队列就简称为链队列。一个链队列需要两个指针(头指针和尾指针),它们分别用来指示队头和队尾。原创 2023-04-24 19:50:55 · 464 阅读 · 0 评论 -
括号匹配问题(栈的应用)–c语言实现
检测括号是否成对出现这种就是匹配的这种就不是匹配的。原创 2023-04-24 13:38:23 · 3200 阅读 · 0 评论 -
汉罗塔问题(递归)
现在我们单独来看前两个盘子,因为第三个盘子是最大的,所以移动前两个盘子的时候不必考虑盘子的大小。在移动前两个盘子的时候,也是要先将第一个盘子先移到c柱子上,然后再将第二个盘子移动到b柱子上,最后再将第一个盘子从c柱子移到b柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。无论多少个盘子,就像是n个,都是先将n-1个盘子先从a柱子移动到b柱子,再将第n个盘子移动到c柱子,最后将这n-1个盘子从b柱子移动到c柱子。:将b柱子上的两个盘子移动到c柱子上。原创 2023-04-22 18:12:40 · 2389 阅读 · 0 评论 -
数据结构之线性表(总结)
但为了表示个个节点的关系,也就是数据之间的关系,我们就需要给每个节点加上指针字段,用来存储下一个节点(数据)的存储地址。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。说简单点,顺序存储就是在内存中找块地,把一定的内存空间占了,然后通过依次占位的方式,把相同数据类型的数据元素依次存放在这块地上。顺序存储:将数据依次存储在连续的整块空间中,是用一段地址连续的存储单元依次存储线性表的数据元素。这两部分组成的一个结构体,在连链表中称为结点。原创 2023-04-19 12:04:03 · 320 阅读 · 0 评论 -
数据结构:多项式相加--c语言实现(包括排好序与未排序的情况)
因为我们是用原来第一个链表来存放相加后的节点,所以需要用r来指向第一个链表的头结点,并且我们不需要第二个链表的头结点了,所以释放它。首先分配一个q来存放需要加入的节点,然后用循环找出链表的最后一个节点,最后将最后一个节点的next域指向q.LindNode结构体中存放的coefficient、exponent分别指的是每一项的系数和指数。这个代码的目的是实现类似于20x^5 +2x^4 + 10x^2 -5x这样的式相加。,将r的next域指向指数更小的一项。的多项式,也就是排好序的。运行结果与上方一样。原创 2023-04-08 13:41:09 · 430 阅读 · 0 评论 -
数据结构:静态链表–C语言代码
和是线性表链式存储结构的两种不同的表示方式。是用类似于数组方法实现的,是顺序的存储结构,在物理地址上是连续的,而且需要预先分配地址空间大小。所以静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针。原创 2023-04-06 21:40:23 · 246 阅读 · 1 评论 -
数据结构 单链表--c语言(简单易懂)
该函数是创建头结点,一个不存放数值的节点,目的是方面对链表的操作。该函数是使用函数的了,一般我会写在mian方法中。有效数据,加头节点的目的是为了方便对链表的操作。2.头节点:第一个有效节点前面的那个节点,并。定义:n个节点离散分配,彼此通过指针相连。该函数就是不用指针 用&符来连接各个节点。接下来将附上我的代码,也包括了对单链表的。4.头指针:指向头节点的指针变量。5.尾指针:指向尾节点的指针变量。3.尾节点:最后一个有效节点。1.首节点:第一个有效节点。以上是闵帆老师的代码。原创 2023-03-29 12:49:49 · 144 阅读 · 0 评论 -
数据结构c语言代码:顺序表
代码目的:实现一个用结构体装好的数组来存储数值,包括插入、删除的操作。一些函数的使用目的都标在代码块上了,欢迎留言。原创 2023-03-24 13:59:18 · 132 阅读 · 0 评论 -
对于数据结构的基本认知,入门知识--初识数据结构
但为了表示个个节点的关系,也就是数据之间的关系,我们就需要给每个节点加上指针字段,用来存储下一个节点(数据)的存储地址。它之间是互相存在一种或多种特定关系的数据元素的集合,换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系.数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。其实在我看来,数据结构的本质是存储数据以及怎样利用存储数据的方式来解决各种各样的算法题.数据元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。原创 2023-03-22 21:52:58 · 521 阅读 · 2 评论