自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 七种常用的排序

【代码】七种常用的排序。

2023-06-12 15:47:06 100

原创 哈希表的创建和查找

哈希表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

2023-06-12 15:39:29 470

原创 顺序查找和二分查找

顺序查找的查找过程为:从表的一端开始,依次将记录的关键字和给定值进行比较,若某个记录的关键字和给定值相等,则查找成功;反之,若查找整个表后,仍未找到关键字和给定值相等的记录,则查找失败。在顺序存储结构中,可以将结构体数组的第一个空间element[0]闲置,存储给定值,以此作为监视哨。顺序查找的时间复杂度为O(N),算法简单,顺序存储结构和链式存储结构都适用,但是平均查找长度大,当N很大时不适用。

2023-06-12 15:21:00 214

原创 N皇后问题(回溯算法)

在8×8格的上摆放8个皇后,使其不能互相攻击,即任意两个皇后都,问有多少种摆法。认为有76种方案。1854年在的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。

2023-05-29 21:12:20 151

原创 邻接矩阵的深度优先、广度优先遍历

DFS类似于树的先序遍历,是树的先序遍历的推广。在邻接矩阵中,DFS算法的空间复杂度为O(N),时间复杂度为O(N^2)。DFS算法主要思路1.从图中某个顶点v出发,访问v。2.找出刚才访问过的顶点的第一个未被访问的邻接点,访问该顶点。以该顶点为起点,重复此步骤,直至刚访问过的顶点没有未被访问的邻接点为止。3.返回前一个访问过的且未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点。4.重复步骤2,3,直至图中所有顶点都被访问过,搜索结束。

2023-05-29 19:42:18 706

原创 拓扑排序的原理及实现

用顶点表示活动,弧表示活动间的优先关系的有向图称为以顶点表示活动的网,简称AOV-网。在网中,若从顶点vi到顶点vj有一条有向路径,则vi是vj的前驱,vj是vi的后继。所谓的拓扑排序就是将AOV-网中所有的顶点排成一个线性序列,该序列满足:若在AOV-网中从顶点vi到顶点vj有一条路径,则该线性序列中的顶点vi必定在顶点vj之前。

2023-05-29 16:11:05 213

原创 最小生成树Prim和单源最短路径Dijkstra

最小生成树能保证在整个拓扑图中的所有路径之和最小,但不能保证任意两点之间是最短路径。单源最短路径是从一点出发,到达目的地的路径最小。即最小生成树追求在拓扑图中追求直接相连的两点间的路径最短,不追求不直接相连的两点间路径最短;而单源最短路径追求起点到目标点间的路径最短。

2023-05-25 20:35:06 671

原创 哈夫曼树的创建和应用

要创建和使用哈夫曼树,就要有相应的结构定义,首先要定义一个树结构,还要定义一个栈来存储每个字符对应的哈夫曼编码。//最大读入的文本文件字符长度char c;int weight;//记录节点表示的二进制,左0右1int binary;//是否创建节点,0未创建,1创建;int flag;int top;}STACK;

2023-05-13 17:57:21 848

原创 二叉树的创建和遍历学习

二叉树是每个节点最多只有两个分支的树结构。通常分支被称作“左子树”或“右子树”。二叉树的左右次序不能随意颠倒。

2023-05-01 16:02:38 538

原创 链队列学习

int data;这里定义了一个可以存储两个单链表节点的结构体指针LinkQueuePtr,其中front表示单链表的头指针(队头),rear表示单链表的尾指针(队尾)。在链队列的初始化中,定义了空队resultPtr和空表headerPtr,因为当前为空表,所以队头front和队尾rear都指向空表头headerPtr,返回空队resultPtr。

2023-04-24 21:46:47 38

原创 括号匹配学习

我们知道运算在引入括号时,越先引入的左括号,越后才能引入右括号,比如{ [ ( ) ] },左括号 '{' 在第一位,'}' 则到了第六位,但是 '(' 在第三位,而 ')' 在第四位,括号运用法则符合栈的先进后出,后进先出,所以我们可以用栈来检查括号是否匹配。入栈时只入括号类型的左括号,这样字符串移动识别到相同类型的右括号时,栈的长度top减一,删除表示栈的数组的末下标元素表示弹栈,当右括号与栈数组的末下标元素不匹配时返回false,表示括号不匹配。否则top-1,返回原本top下标的元素。

2023-04-24 12:44:45 43

原创 线性表学习总结

线性表是一种常用的数据结构,一个线性表是n个具有相同特性的数据元素的有限序列,其中的数据元素呈现一对一的关系。线性表分为顺序表和链表。

2023-04-19 23:15:19 77

原创 汉诺塔问题学习

在这个递归解法中,hanoi 函数接受四个参数:盘子的数量 paraN,起始柱子 A,目标柱子 B,和辅助柱子 C。否则,将除最大的盘子外的所有盘子从起始柱子移动到辅助柱子上,然后将最大的盘子从起始柱子移动到目标柱子上,最后将辅助柱子上的所有盘子移动到目标柱子上,完成整个移动过程。在 main 函数中,我们将盘子数量设为3,起始柱子设为A,目标柱子设为B,辅助柱子设为C,然后调用 hanoi 函数来解决汉诺塔问题。汉诺塔问题是一个运用递归方法的典型例子。

2023-04-19 19:16:57 97

原创 多项式加法学习

多项式加法是链式有序表合并中的一个例子,便于我们理解链表是如何合并的。运行结果。

2023-04-08 22:07:19 68

原创 静态链表学习笔记

静态链表有助于理解系统空间的分配机制,他既有链表的运作逻辑,也长有与顺序表相似的模样,静态链表代码如下: 下面是运行结果: 为什么说静态链表有着与顺序表相似的模样,主要还是因为这两个表的结构体部分和初始化部分。顺序表的结构体与初始化部分如下: 再来看静态链表的结构体与初始化: 不难发现静态链表结构体StaticLinkedList中的NodePtr nodes声明经过动态内存函数申请后变成了可以容纳DEFUALT_SIZE(5)个结构体StaticLinkedList的数

2023-04-05 17:28:45 78 2

原创 单链表学习

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。通过节点中包含下一节点地址的指针这一性质,我们可以随意增加新的数据进链表中,受空间问题的限制比顺序表小很多,下面的代码包含单链表的初始化,增加数据,删除数据,插入数据,打印数据,判空和释放链表七个功能的实现。

2023-03-29 15:09:37 49 1

原创 顺序表作业

【代码】顺序表作业。

2023-03-25 16:24:17 41

原创 数据结构开课心得

数据结构是我们学习编程语言时要着重掌握的部分。绪论是整本书的开篇,看似没有内容,仔细阅读还是能解读出我们往后学习的内容的大致信息。

2023-03-22 15:47:11 150 2

空空如也

空空如也

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

TA关注的人

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