北街学长
码龄8年
关注
提问 私信
  • 博客:182,780
    182,780
    总访问量
  • 99
    原创
  • 42,957
    排名
  • 334
    粉丝
  • 5
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 毕业院校: 电子科技大学
  • 加入CSDN时间: 2016-11-22
博客简介:

北街lhy的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    725
    当月
    6
个人成就
  • 获得266次点赞
  • 内容获得79次评论
  • 获得732次收藏
  • 代码片获得1,815次分享
创作历程
  • 1篇
    2024年
  • 2篇
    2023年
  • 1篇
    2022年
  • 76篇
    2021年
  • 1篇
    2020年
  • 4篇
    2019年
  • 14篇
    2018年
成就勋章
TA的专栏
  • 考研分享
    1篇
  • 栈
  • 递归
    1篇
  • CSS
    1篇
  • react
    2篇
  • 学习
    12篇
  • webpack
    3篇
  • js
    2篇
兴趣领域 设置
  • 人工智能
    神经网络
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

182人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

红黑树C语言代码实现

通过对红黑树的左旋、右旋、变色操作,以及前驱节点和后继节点的查找,我们能够维护红黑树的平衡性,确保其高效的查找、插入和删除操作。本文详细介绍了这些辅助操作的实现代码,为深入理解红黑树提供了基础。红黑树通过在插入和删除节点后进行必要的旋转和变色操作,确保树的高度始终保持平衡,从而保证高效的查找、插入和删除操作。本文详细讲解了红黑树的插入操作及其调整机制,通过具体代码展示了实现过程。理解红黑树的这些基本操作对于掌握高级数据结构和算法具有重要意义。红黑树的删除操作比插入操作复杂得多,需要考虑多种情况。
原创
发布博客 2024.07.23 ·
1138 阅读 ·
26 点赞 ·
0 评论 ·
30 收藏

考研数据结构学习方法经验贴

🤠当一轮学习完成之后,第二轮就需要将第一轮做错的选择题再做一遍,并且将代码题综合题硬着头皮去做,不要有畏难情绪,大家都是这么过来的,当然学长这里不建议只写伪代码,看似好像初试又不上机,伪代码就足够了,实则不然,伪代码有着天然的不足,很多同学都会陷入一个窘境,那就是根本不知道自己写的伪代码到底对不对,没有人能够告诉他,而且很大可能是错的,自己却误以为是对的。这样的情况对于我们的学习是极其不利的,应极力避免。而自命题不同,命题及其不确定,难度普遍偏大,体现在代码题的题量上,所以自命题的备考应重视代码题的训练。
原创
发布博客 2023.05.13 ·
1525 阅读 ·
6 点赞 ·
1 评论 ·
5 收藏

考研数据结构百题狂练

该系列视频收录130道考研编程题,覆盖王道所有课后代码题,精选部分李春葆、严蔚敏数据结构课后题,且手把手带你敲出每一行代码,分析题目思路,总结题目规律,应对考研期末绰绰有余。完整课程 CCTalk 搜索:北街学长 或添加QQ:973086561
原创
发布博客 2023.02.01 ·
440 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

C语言读取文件内容创建二叉树

C语言读取文件内容创建二叉树
原创
发布博客 2022.10.10 ·
2407 阅读 ·
0 点赞 ·
0 评论 ·
15 收藏

分别采用深度优先遍历和广度优先遍历判断是否存在由vi到vj的路径,图用邻接表存储

分析: 采用深度优先:我们从vi顶点开始进行深度遍历,若若存在路径则必然可以走到vj顶点处; 采用广度优先:同样从vi顶点开始进行广度遍历,若存在则必然可以走到vj顶点处。...
原创
发布博客 2021.06.11 ·
3031 阅读 ·
1 点赞 ·
3 评论 ·
32 收藏

从文件中读取数据以创建图

背景:之前一直在控制台输入有关图所需的数据,可控制台极易输错,且要想达到好的测试效果,那么就需要大量数据,显然控制台输入太慢且费时,所以思考利用文件读取的方式。
原创
发布博客 2021.06.07 ·
3296 阅读 ·
15 点赞 ·
3 评论 ·
71 收藏

广度优先遍历

题目:对采用邻接表存储的图进行广度优先遍历分析:我们知道邻接表上的顶点所连接的节点都是它的相邻节点,而对于广度优先遍历来说,类似于层次遍历,就是要把所有的邻接点进行访问, 所以我们需要从第一个节点开始访问它的所有邻接点,还有需要注意的是,当我们把邻接点访问后,需要依次访问邻接点的邻接点,这就需要 用队列将我们访问过得邻接点入队,这和层次遍历一样,也只有这样,我们才能访问所有的节点。当然,在这个过程中,会有重复访问的情况, 所以我们需要用一个数...
原创
发布博客 2021.06.07 ·
307 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

车辆轮渡管理

题目:汽车轮渡,要求:每次10辆,客车优先于货车,每上4辆客车才能上1辆货车,客车不足4辆时,货车代替货车不足时,允许客车都上。分析:这仍然是一类排序的问题,王道书上的解答可以,核心意思就是客车和货车分为两个队列,客车队列出4辆,紧接着货车队列出一辆;当出现客车不足时,出货车队列代替,当货车不足时,继续出客车队列。代码也不难实现。 这里我想分享一下自己的想法,我们上一题做过货车车厢调整的算法,利用栈将软座调整到硬座的前面,这里我们可以仿造相当于我们要将客车调整到货车的前面,只是有限制...
原创
发布博客 2021.06.05 ·
611 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

利用栈实现递归函数的非递归计算

题目:利用栈实现以下递归函数的非递归计算分析: 这里我们需要使用栈的先进后出特性。我们可以看出,从n=2开始,每一个值便都与前两个值挂钩,且式子不变,我们可以从栈顶到栈底依次边出栈边计算,直至栈底,便可以得出最终结果。代码如下:#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>struct Recursion { int no; int val;...
原创
发布博客 2021.06.05 ·
3214 阅读 ·
15 点赞 ·
3 评论 ·
32 收藏

车厢调度

题目:利用栈进行车厢调度,使软座全部位于硬座前面分析: 原文题目较长,但仔细分析后,这道题是一类较为简单的题。这里其实也并不需要用到栈的先入后出的特性,仅仅需要将硬座暂存,让软座先出去而已,所以将栈换成其他结构也是可以的,只要能够暂存数据。但这里题目要求用栈。 为了模拟列车座位,我们采用两个数组来存储,数组A为入口处火车,数组B为出口处火车,A内数据依次入栈,若为硬座则压入栈,若为软座则直接进入B,最后栈内元素全部出栈,入B,至此,完成要求。代码如下:#in...
原创
发布博客 2021.06.05 ·
540 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

邻接表存储图☆

采用邻接表的方式存储图 分析: 采用邻接表相对于邻接矩阵来说更节省存储空间,这里我们需要两个数据结构: ①顶点表结构:包括顶点信息及指向第一个邻接点的头指针 ②边表结构:包括该邻接点域(在数组中的下标)、权值及下一个邻接点指针 ③一个数组,用于存储所有顶点,因为数组的随机存储特性,方便我们查找 ④图结构:包括顶点数组及顶点数、边数 具体创建流程: 首先我们需要输入图的顶点...
原创
发布博客 2021.04.11 ·
1388 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

使用邻接矩阵存储图

使用邻接矩阵构造图 分析: 其实图相比于其它数据结构较复杂,但也是十分易懂的,对于使用邻接矩阵存储的图来说,我们所需要知道的数据有 图的定点数、边数、用一个二维数组存储的边与边的联系及其权值,未连接的边我们要使用无穷表示,节点自身用0 表示,初始时除自身节点外均表示为无穷。另外我们还需要一个一维数组用来存储我们的顶点个数代码如下:读者可以自行测试#define MAXSIZE 100 //数组最大值typedef struct Grap...
原创
发布博客 2021.04.10 ·
1521 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

判断是否是平衡二叉树

利用二叉树遍历的思想编写一个判断二叉树是否是二叉平衡树的算法 分析: 我们可以采取后序遍历来完成该算法,因为后序遍历不会含有重复计算。 我们对每一个节点进行判断,如果左右子树均平衡且左右子树高度差小于等于1,则该节点平衡代码如下:struct Tree { int data; Tree *left, *right;};#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#includ...
原创
发布博客 2021.04.09 ·
1140 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

求出给定节点在二叉排序树中的层次

题目:设计一个算法,求出指定节点在给定二叉排序树中的层次 分析: 我们可以根据二叉排序树的性质,从根节点一直向下查找,每查找一次,层次便加一typedef struct node { int data; node *left, *right;}Tree;#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>Tree *create(Tree *T) {/...
原创
发布博客 2021.04.08 ·
4838 阅读 ·
12 点赞 ·
0 评论 ·
39 收藏

判断一颗二叉树是否是二叉排序树

题目:编写一个算法判断给定的二叉树是否是二叉排序树分析: 二叉排序树的中序序列是升序序列,我们可以根据这一特性来进行判定typedef struct node { int data; node *left, *right;}Tree;#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>Tree *create(Tree *T) {//先序创建一颗二叉树 i...
原创
发布博客 2021.04.08 ·
2979 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

以孩子兄弟链表为存储结构,请设计递归算法求树的高度

题目:以孩子兄弟链表为存储结构,请设计递归算法求树的高度分析:如果只有根节点,那么高度为1,如果有左孩子,那么高度由左孩子的左子树和右子树决定,取其大者。代码如下:typedef struct node { char data; node *fch, *nsib;}Tree;#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>Tree *create(Tree *T)
原创
发布博客 2021.04.01 ·
4420 阅读 ·
3 点赞 ·
5 评论 ·
18 收藏

编程求以孩子兄弟表示法存储的森林的叶子结点数☆

题目:编程求以孩子兄弟表示法存储的森林的叶子结点数分析:我们可以试想一个节点它如果有左孩子,那么根据孩子兄弟表示法的规则,那它一定不是叶节点,相反如果没有左孩子,那么 它一定是叶子结点,其右孩子即它的兄弟,同样应该这样去判断。代码如下:typedef struct node { char data; node *fch, *nsib;}Tree;#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>...
原创
发布博客 2021.04.01 ·
2147 阅读 ·
1 点赞 ·
1 评论 ·
7 收藏

将表达式树转换成中缀表达式☆

题目:请设计一个算法,将给定的表达式树,转换成等价的中缀表达式并输出。分析: 题目已然说明我们要采取中序遍历,进而输出该表达式,那么需要注意的点便是我们的括号在哪里加,其中根节点处(也就是整个式子不需要包裹一层)和叶子结点 处(也就是操作数)不需要添加括号,其余情况在访问左子树前加左括号,访问右子树后添加右括号。代码:struct BTree { char data; struct BTree *left, *right;};#define _CRT_SE...
原创
发布博客 2021.04.01 ·
2346 阅读 ·
6 点赞 ·
3 评论 ·
20 收藏

求叶节点带权路径长度之和

题目:二叉树的带权路径长度(WPL)是二叉树中所有叶节点的带权路径长度之和。给定一颗二叉树T,采用二叉链表存储,节点结构为 left weight right 试设计求T的WPL的算法分析: 我们求带权路径长度,既需要知道叶节点的权值,也需要知道其经过的路径,我们可以设置一个变量depth代表深度,也就是 路径长度,设置一个静态变量weight累加带权路径,会使用到递归。代码如下:struct tree { int w...
原创
发布博客 2021.03.31 ·
1215 阅读 ·
3 点赞 ·
2 评论 ·
1 收藏

通过中序线索二叉树找某节点的后续前驱☆

题目:写出在中序线索二叉树里查找指定节点在后序的前驱结点的算法分析: 在后序序列中,若节点p有右子女,则右子女是其前驱,若无右子女而有左子女,则左子女是其前驱。若节点p左右子女均无, 设其中序左线索指向某祖先节点f(p是f右子树中按中序遍历的第一个节点),若f有左子女,则其左子女是节点p在后序中的前驱; 若f无左子女,则顺其前驱找双亲的双亲,一直找到双亲有左子女(此时左子女是p的前驱)。还有一种情况,若p是中序遍历的第 一个节点,则节点p在中...
原创
发布博客 2021.03.31 ·
1231 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏
加载更多