自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单链表的一些个人易错的问题(有理解不正确的地方请大佬指正)

简而言之就是,带*,&符号加变量的,指的是变量的内容(当然,一开始定义的类型得为指针类型),不带这两符号的就是取的地址,值得注意的是,运用结构体中的指针时需要使用->符号。问题:插入的元素与链表L的关系 可以说是毫不相关啊,哥们这是定义了一个链表head啊。一次的c语言程序作业,个人认为是一个比较好的模板,自己实力蒟蒻,大佬勿喷。在单链表中对指针的理解(引入第二个代码的修改版本吧,看的更直观一点)问题:输出遍历起始位置不正确。代码3.(正确示范)代码1:(正确示范)代码2:(错误示范)代码4.(错误代码)

2024-04-01 20:46:36 344 1

原创 每日学习-2月20日

知识点:最小生成树定义:最小生成树(Minimum Spanning Tree,简称)是图论中的一个概念。给定一个连通的无向图,最小生成树是指包含图中所有顶点的一棵树,且该树的所有边的权重之和最小。性质:连通性:最小生成树必须包含图中的所有顶点,并且通过边将它们连接起来,确保整个图是连通的,即任意两个顶点之间都有路径。(一颗有 n 个顶点的生成树有且仅有 n−1 条边,如果生成树中再添加一条边,则必定成环。无环:最小生成树是一棵树,所以不能包含任何环(即回路)。

2024-02-24 23:06:21 413

原创 每日学习-2月19日

知识点:二叉树的遍历算法。

2024-02-24 22:54:12 334

原创 每日学习-2月18日

(1)调用InOrderTraverse(T),T的根结点不为null,于是调用InOrderTraverse(T->lchild);访问结点A的右孩子C,再递归访问结点C的左孩子F,结点F的左孩子I。结点B的递归函数执行完毕,返回到了最初我们调用 InOrderTraverse的地方,打印字母A,如下图所示。访问结点H的右孩子K,因结点K无左孩子,所以打印K,如下图所示。访问结点B的右孩子E,因结点E无左孩子,所以打印E,如下图所示。打印字母D,如下图所示。(4)结点D无右孩子,此函数执行完毕,返回。

2024-02-24 22:37:07 399

原创 每日学习-2月23日

访问了K结点的左孩子,K结点无左孩子,返回,调用PreOrderTraverse(T->rchild);于是此函数执行完毕,返回到上一级递归的函数(即打印H结点时的函数),也执行完毕,返回到打印结点D时的函数,调用PreOrderTraverse(T->rchild);(5)再次递归调用PreOrderTraverse(T->lchild),访问了H结点的左孩子,此时因为H结点没有左孩子,所以T==null,返回此函数,此时递归调用PreOrderTraverse(T->rchild);

2024-02-23 22:30:31 406

原创 每日学习-2月22日

规则是若树为空,则空操作返回,否则从树的第一层,也就是根结点开始访问,从上而下逐层遍历,在同一层中,按照从左到右的顺序对结点逐个访问。规则是若树为空,则空操作返回,否则从根结点开始,中序遍历根结点的左子树,然后是访问根节点,最后中序遍历右子树。规则是若树为空,则空操作返回,否则从左到右先叶子后结点的方式遍历访问左右子树,最后是访问根结点。规则是若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。用链表存储,链表节点对应树节点,其中包含一个数据域与若干个指针域。

2024-02-22 22:21:43 372 1

原创 每日学习-2月21日

任意一颗树,它的结点的第一个孩子如果存在就是唯一的,它的右兄弟如果存在也是唯一的,因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟。对一棵具有n个结点的二叉树按层序编号,如果编号为i的结点与同样深度的满二叉树中编号为i的结点在二叉树中的位置完全相同,则这棵二叉树称为完全二叉树。二叉树是n个结点的有限集合,该集合或者为空集(称为空二叉树),由一个根结点和两棵互不相交,分别称为根结点的左子树和右子树的二叉树组成。所有的结点都只有左子树的二叉树叫左斜树,所有结点都只有右结点的二叉树叫右斜树。

2024-02-22 09:08:47 397 2

原创 每日学习-2月16日

【代码】每日学习-2月16日。

2024-02-20 15:16:25 336

原创 每日学习-2月15日

练习:数组模拟栈解决高精度加法。

2024-02-17 22:56:03 349 1

原创 每日学习-2月14日

【代码】每日学习-2月14日。

2024-02-16 22:22:58 324

原创 每日学习-2月8日

度为0的结点称为叶结点或者终端结点;度不为0的结点称为非终端结点或分支结点。结点的子树的根称为该结点的孩子,相应的,该结点称为孩子的双亲。同一个双亲的孩子之间互称兄弟,结点的祖先是从根到该结点所经分支上的所有结点。反之,以某结点为根的子树中的任一结点都称为该结点的子孙。假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示器指示其双亲结点在数组中的位置。结点的层次从根开始定义起,根为第一层,根的孩子为第二层。如果将树中结点的各子树看成从左到右是有次序的,不能互换,则称该树为有序树,否则称为无序树。

2024-02-15 21:18:41 329 1

原创 每日学习-2月7日

步骤3:dp数组的初始化:首先从dp[i][j]的定义出发,如果背包容量j为0的话,即dp[i][0],无论是选取哪些物品,背包价值总和一定为0。步骤2:递推公式:dp[i][j]=max(dp[i-1][j],dp[i-1][j-weight[i]]+value[i]);假设1:装当前物品,在给当前物品预留了相应空间的情况下,前n-1个物品的最佳组合加上当前物品的价值就是总价值。假设2:不装当前物品,那么前n个物品的最佳组合和前n-1个物品的最佳组合是一样的。现在有物品0:重量1,价值15;

2024-02-14 20:57:21 322 1

原创 每日学习-2月6日

假设终点是(i,j),那么只需找出到达(i-1,j)和(i,j-1)的位置有多少种路径即可,同理,要找出到达(i-1,j)和(i,j-1)的路径有多少种,即分别找出到达这两点的上一步的路径有多少条即可,以此类推。假设你正在爬楼梯,需要n阶你才能到达楼顶,每次你可以爬1阶或2阶台阶,请问你有多少种不同到达楼顶的方法。由此可得规律,得递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1]步骤2:递推公式:dp[i]=dp[i-1]+dp[i-2]步骤3:初始化:dp[0]=1,dp[1]=1。

2024-02-07 20:57:00 353 1

原创 每日学习-2月5日

宽度优先搜索算法主要使用队列的“先进先出”的特性来实施算法过程:从初始结点开始,应用产生式规则和控制策略生成第一层结点,同时检查目标结点是否在这些生成的结点中。如果没有,继续产生式规则将第一层中所有结点逐一拓展出第二层结点,并逐一检查第二层中的所有结点是否包含目标结点,以此类推。广度优先搜索:又称广度优先搜索,是一个针对图和树的遍历算法,最初主要用于解决迷宫最短路径和网络路由等问题。入队 ,队尾指针后移,搜索头节点相邻的结点,队尾指针继续后移,将其相邻的结点入队,即。知识点:广度优先搜索。

2024-02-05 20:28:10 380 1

原创 每日学习-2月2日

请写一个程序,对于我们的关于亲戚关系的提问,以最快速度给出答案。第一部分是以N,M开始。N为人数(1<=N<=2000),这些人的编号为1,2,3,......,N。下面有M行(1<=M<=1000000),每行有两个数a,b,表示a和b是亲戚。假如有编号为1,2,3,......n的n个元素,我们用一个数组fa[ ]来存储每个元素的父节点。以下Q行有Q个询问(1<=Q<=1000000),每行为c,d,表示询问c和d是否为亲戚。对于询问c,d输出一行:若c,d为亲戚,则输出“YES”,否则输出“NO”

2024-02-02 19:00:51 543

原创 每日学习-2月1日

可用SeqListInert和SeqListErase函数来实现头插,尾插,头删,尾删,更加方便简洁。SeqListFind可以和SeqListInsert和SeqListErase配合使用,更加简单便捷。知识点:顺序表(后续)

2024-02-01 21:04:49 638

原创 每日学习-1月31日

缺点:N的大小很难确定,N给小了不够用,N给大了浪费。静态特点:如果满了不让插入。

2024-01-31 21:33:23 387 1

原创 每日学习-1月30日

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端为栈顶,另一端为栈底。栈中的数据元素遵守后进先出的原则。利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。压栈:栈的插入操作叫作入栈/压栈/进栈,入数据在栈顶。当top-base==stacksize时,表示栈满。另设base指针,指示栈底元素在顺序栈中的位置。附设top指针,指示栈顶元素在顺序栈中的位置。出栈:栈的删除操作叫做出栈,出数据也在栈顶。栈的顺序存储--顺序栈。栈的链式存储--链栈。

2024-01-30 21:51:28 359 1

原创 每日学习-1月29日

假设1为起始点,先将1入栈,栈顶指针指向1,设定搜索与此时的数相邻且较小的数,此时与1相邻的数有2和8,,且2<8,故将2入栈,栈顶指针指向2,以此类推,当将5入栈后,发现没有符合的目标,故回溯,将5出栈,栈顶指针回到4,之后将6入栈,7入栈时同理。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串......最后当8入栈后发现,此时已经没有与8相邻且未被遍历的结点,故弹出,栈顶指针指向6,接下来与8弹出同理,将6,4,3,2,1逐一弹出。

2024-01-29 21:35:19 495

原创 每日学习-1月28日

情景:小哼最近爱上了“炸弹人”游戏,现在有一个特殊的关卡如下:你只有一枚炸弹,但是这枚炸弹威力超强(杀伤距离超长,可以消灭杀伤范围内所有的敌人)。请问在哪里放置炸弹才可以消灭最多的敌人。判断其他方位的方式同上。

2024-01-28 19:30:18 478

原创 每日学习-1月26日

链表的优点:1.数据元素的个数可以自由扩充2.插入,删除等操作不必移动数据,只需修改链表指针,修改效率较高链表的缺点:1.存储密度小2.存储效率不高,必须采用顺序存取,即存取数据元素时,只能按链表的顺序进行访问情景:设置一个链表存储n个的学生信息为了后续声明结构体的方便,可使用typedef对其重命名typedef:例如声明一个结构体,一般都是struct student a;重命名之后只需要stu a;就完成了结构体的声明。

2024-01-26 19:59:02 440

原创 每日学习-1月25日

规则如下:首先将第1个数字删除,紧接着将第2个数字放到这串数字的末尾,再将第3个数删除并将第4个数放到这串数的末尾,再将第5个数删除......直到剩下最后一个数,将最后一个数也删除。题目描述:n 个人围成一圈,从第一个人开始报数,数到 m 的人出列,再由下一个人重新从 11 开始报数,数到 m 的人再出圈,依次类推,直到所有的人都出圈,请输出依次出圈人的编号。思路:通过对人的编号(即变量i)的遍历,使用a[i]==0和a[i]=1实现删除,使用k进行计数,即人所报编号。知识点2:栈的使用-判断回文。

2024-01-25 19:45:26 424

原创 学习总结1.0

在32位系统中int占32位,即4个字节,所以int的范围是[-2^31,2^31-1],为10^9数量级;有n盏灯,编号为1-n。第一个人把所有的灯打开,第2个人按下所有编号为2的倍数的开关(这些灯被灭掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,打开的灯将被关闭),以此类推。将100至200的数遍历从100除至200,如果期间除余为0,则j也是它的因数,说明它不是素数,反之则是素数。对于对素数的查找,可以确定素数一定是奇数,且因子只需要遍历至平方根位置即可,从而达到优化的效果。

2023-12-17 20:36:02 374 1

空空如也

空空如也

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

TA关注的人

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