自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构9.2--哈希表

哈希表是一种可以根据以key-value键值对形式存储数据的数据结构,可以通过关键字Key直接找到数据Value的存储位置,而不需要经过任何的遍历和比较。在使用时要保证空间足够大,运用空间换时间的方式,所以查找的时间复杂度为O(1)。2)以上代码使用取余数的方式进行数据的存储,当产生冲突时向后移动一位。1)哈希表:哈希表(

2024-05-27 17:17:59 293

原创 数据结构9.1--顺序查找与二分查找

2)二分查找(折半查找):该查找方式要求线性表必须采用顺序存储结构,而且元素按关键字有序排列。二分查找每次查找都使查找范围缩小一半,与顺序查找相比,很显然会提高查找效率。缺点:对表结构要求高,只能用于顺序存储的有序表。优点:算法简单,对表结构无任何要求,既适用于顺序结构,也适用于链式结构,无论记录是否按关键字有序均可使用。1)顺序查找:在构造数据结构时设置了一个“哨兵”,免去了查找过程中每一步都要检测整个表是否查找完毕。缺点:平均查找长度较大,查找效率低,所以当n很大时, 不宜采用顺序查找。

2024-05-27 17:11:16 233

原创 数据结构7.3--Prim算法与Dijkstra算法

2)Dijkstra算法:与Prim算法有相似之处但又不同,是一个按路径长度递增的次序产生最短路径的算法,要求所有边的权重都为非负值。首先找一个源点,然后从该源点出发找一条权重最小的路径,然后又以该路径的另一端点为源点,继续向下找点。1)Prim 算法:生成最小树,可以运用于城市之间修路的最小投入问题,在每次选择最小边时可能存在同样权值的表面可以选择,此时任选一条即可。

2024-05-23 15:12:32 133 1

原创 数据结构7.2--邻接表及广度优先遍历

代码中有部分与7.1图的遍历是一样的,在此代码中主要理解的是如何将图转化为邻接表,以及邻接表的广度遍历,与图的广度遍历相似,都运用队列来进行操作。

2024-05-20 21:30:53 199 1

原创 数据结构7.1--图的遍历

3)广度遍历:运用队列来对图中的元素进行遍历。任意从一个元素出发,对该元素做入队操作,然后出队并将与之相连的元素入队,然后依次出队并入队与出队元素相连的元素。若某入对的元素与已经出对的元素相连,则没有元素需要入队了。2)深度遍历:运用栈来对图中的元素进行遍历。任意从一个结点出发,将该元素入栈并输出,然后将与该元素有联接的元素入栈并输出,然后依次进行压栈操作,若压入的某个元素与它相连的元素都已经入栈或出栈,则该元素也将出栈。若边集是无向边的集合,则称为无向图。树也是图的一种,但是图更具有一般性。

2024-05-18 15:29:29 256

原创 数据结构6.3--N皇后问题

【代码】数据结构6.3--N皇后问题。

2024-05-17 13:25:40 155

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

3)层次遍历:从根节点出发,依次访问左右孩子结点,再从左右孩子出发,依次它们的孩子结点,直到节点访问完毕。在根节点入队后,其两个子节点会跟着入队,然后根节点出队,以此类推。1)该代码首先进行了一个循环队列的元素加入与删除,并在测试的时候跟踪了在删除和添加的过程中front和rear的变化,让我对循环队列的印象进一步加深。2)前序遍历:首先判断当前节点是否为空,如果为空则返回。然后递归地访问当前节点的左子树。后序遍历:首先判断当前节点是否为空,如果为空则返回。然后递归地访问当前节点的左子树。

2024-05-13 17:32:53 210 2

原创 数据结构5.2--压缩矩阵的转置

【代码】数据结构5.2--压缩矩阵的转置。

2024-05-10 20:34:20 129 1

原创 数据结构5.1--二维数组与矩阵乘法

以上代码定义了两种二维数组的数据结构,一种是可以动态分配的,一种是静态的。动态分配的相对来说更加灵活,但是运用到的是指针的指针,即第一个指针代表储存的地址,第二个指针代表该地址下储存的数据。静态的则只有一次动态分配,并且会分配好该数组的大小,所以在编写代码的过程中要避免出现越界的问题。

2024-05-10 19:22:27 181 1

原创 数据结构3.7--循环队列

就可以很容易实现指针的循环移动。但是循环队列中存在一个问题,在循环队列中只凭头指针front等于尾指针rear无法判别队列空间是“空”还是“满”,所以在以上代码中,我们在移动rear的过程中来和front进行判断,如果二者的值是相同的,则说明该循环队列已经“满”了,不能再添加元素。循环队列中指针和队列元素之间的关系不变,我们只需要利用。

2024-05-09 19:02:44 290

原创 数据结构3.6--链队列

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特点。入队列:进行插入操作的一端称为队尾(rear);出队列:进行删除操作的一端称为队头(front)。而在上示代码中,我们定义的头节点没有放任何元素,所以在进行删除操作时发生改变的只是front的下一个结点。

2024-05-09 18:39:45 178

原创 数据结构3.5--汉诺塔问题

汉诺塔问题是递归函数中的经典问题,关键在于弄清楚其中的关系,画图分析是帮助我们我能理解的不二之法,其次在进行变量的命名时应该用能够体现过程的字符或字符串,以免混淆。汉诺塔问题的时间复杂度为O(),而空间复杂度为O(n),以上图为例,在压栈后会迅速弹出,然后再次进行压栈,所以所需的空间就为n。

2024-04-28 17:27:35 195

原创 数据结构3.4--累加的递归实现

addTo()函数是对从一加到五的递归加法,先执行addTo(5)=addTo(4)+5, 以此类推,最终得到addTo(0), 最后再进行从0到5的加法运算,一步步得到最终的结果,为了弄清每一步执行的是什么可以进行调试,让自己对代码有更深的理解。

2024-04-28 16:36:16 171

原创 数据结构3.2--栈的应用--括号匹配

规定‘#’为基础,最后弹出的如果是它则代表能够匹配;压入栈的也只有左括号,出现右括号则放在栈外与栈内的最上面的括号匹配,如果不能匹配则说明给出的括号不能匹配,返回“FALSE”。

2024-04-27 16:46:22 203

原创 数据结构3.1--栈

栈是一种受限制的表,即在表的一端进行插入和删除操作。栈的底部是固定不动的,在初始化时给栈分配存储空间。在进行压栈操作时,首先应该判断栈的容量是否达到最大,若没有,则将元素存入栈顶,然后将指针上移。出栈也是类似的操作。只要弄清其中的内部关系即可。

2024-04-26 12:56:39 189 1

原创 数据结构2.5--多项式相加

在多项式相加的过程中,其将链表中的每个节点分为三份,其中一份代表系数,一份代表指数,还有一个即为指向下一个节点的指针。在运算过程中,只需要保留一个链表,然后对其中的每个结点的指数经行比较,再由比较的结果对系数经行相加,最后一步一步得到结果。其中的过程或许很繁琐,容易弄混淆,但其中的逻辑关系是很清晰的,在分析清楚之后很容易理解。一、多项式相加就是一个链表的简单运用,其关键在于弄清其中的逻辑关系。请按任意键继续. . .

2024-04-25 22:24:06 627 2

原创 数据结构2.4--静态链表

3.静态链表不同于动态链表在申请和释放时可以用malloc()和free()函数,静态链表中操作的是数组,所以为了辨别数组中的空间是否已经被使用,会采用used数组来存储值,其中1表示被使用,0表示未被使用。1.静态链表是用数组描述的链表,并且由两个数据域组成,data和next,即数组的每个下标都对应一个data和一个next. 其中data用来存放元素,next则相当于链表中的next指针。2.静态链表的内存空间是固定的,在插入数据时,可以把空间建立地大一些,以免在插入过程中会溢出。

2024-04-21 16:59:48 258

原创 数据结构2.3--双向链表

2.从存储结构来看,双向链表的结点比单链表的结点多一个指针,所以双向链表所需的空间就更大。但是双向链表查询数据的效率更高,因为单链表只能从头到尾遍历,而双向链表可以找到前驱和后继。1.双向链表的每个结点都含有一个数据域和两个指针,这两个指针分别指向前驱和后继。3.双向链表的缺点:在增加删除结点是较为复杂,需要多分配一个指针存储空间。一、双向链表的初始化、插入、删除以及查找。三、插入和删除的逻辑视图。

2024-04-18 21:17:12 194 1

原创 数据结构2.2--单链表

此代码展现了单链表的创建、添加、插入和删除,让我对来链表有了初步的了解。同时链表可以让空间分配更合理,不会浪费。

2024-04-07 21:29:23 137

原创 数据结构2.1--顺序表

在练习的过程中,我对链表有了更深的理解,让频繁的插入和删除更加高效,虽然需要遍历的数据较多,显得效率相对较低,但是让我在解决问题时有了新思路。

2024-04-07 15:19:56 145

空空如也

空空如也

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

TA关注的人

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