数据结构与算法
文章平均质量分 64
New Young
拥抱变化,沐浴新知。
展开
-
Hash,位图,布隆过滤器
无原创 2022-09-20 12:53:27 · 456 阅读 · 7 评论 -
RBTree的删除
over and over原创 2022-09-05 10:25:04 · 532 阅读 · 1 评论 -
利用归并排序对大容量文件排序
水到,渠成啊!原创 2022-03-02 22:26:52 · 1059 阅读 · 21 评论 -
八大基本排序与计数排序
水到,渠成。原创 2022-03-01 00:13:13 · 1537 阅读 · 25 评论 -
前中后序遍历的递归与非递归算法,层序遍历
水到,渠成原创 2022-02-25 21:57:51 · 1894 阅读 · 13 评论 -
二叉树相关题目
水到,渠成。原创 2022-02-25 20:25:02 · 610 阅读 · 7 评论 -
堆的概念,堆的创建和时间复杂度证明,堆排序,TopK问题。
或许只有学习能让彷徨的我,心安吧!原创 2022-02-20 00:02:26 · 1304 阅读 · 11 评论 -
二叉树的基本概念
或者只有学习能让彷徨的我,感到心安。原创 2022-02-15 18:42:03 · 357 阅读 · 2 评论 -
栈和队列介绍,与栈和队列经典题目
文章目录前言:栈栈的定义栈的原则栈的功能复写队列队列的定义队列原则队列的功能复写栈与队列题目前言:介绍顺序表中的栈和队列,栈栈的定义栈:一种特殊的线性表,其只允许在固定的一端(栈顶)进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出 -––LIFO(Last In First Out)的原 则。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vrH9W1ET-1637496159238)(栈和队列.ass原创 2021-11-21 20:05:09 · 506 阅读 · 3 评论 -
队列功能复写
文章目录前言队列结构体定义队列的初始化创建结点队列判空入队列出队列取队头元素队列大小队列打印队列销毁前言数组队列,链式队列都可以,只是因为效率,链表队列更好队列结构体定义//队列队尾入,队头出//队列这里使用链表形式。//方便操作typedef int QDateType;typedef struct node{ QDateType x; struct node* next;}Queuenode;//定义队列结点typedef struct { Queuenode*原创 2021-11-21 20:00:28 · 254 阅读 · 0 评论 -
栈功能实现
文章目录前言结构体定义栈初始化栈销毁栈判空栈push栈pop栈顶元素栈的大小栈打印前言栈的实现,数组,链表都可以,但是数组更好:数组更好去push,pop。数组的CPU命中率更高。如果用链表的话,需要一个结构体去存栈底,栈顶地址。结构体定义typedef int SDateType;typedef struct//对 匿名结构体 重命名。 //匿名是一种特殊的结构体定义形式, //但是最后不要定义2种同内容匿名结构体,因原创 2021-11-21 19:32:02 · 283 阅读 · 1 评论 -
栈队列经典题目
文章目录栈队列题目:括号匹配问题2个栈实现队列2个队列实现栈规定大小的循环队列栈队列题目:括号匹配问题博客2个栈实现队列博客2个队列实现栈博客规定大小的循环队列博客原创 2021-11-19 12:19:21 · 871 阅读 · 0 评论 -
固定大小循环队列-链表,数组实现
文章目录题目链表循环队列思路代码数组循环队列思路代码题目力扣链接链表循环队列思路代码typedef int QDateType;typedef struct node{ QDateType x; struct node* next;}Queuenode;//定义队列结点typedef struct { Queuenode*head;//因为在初始化时,需要最终成环,因此记住head Queuenode*front; Queuenode*tail; } My原创 2021-11-19 12:12:30 · 394 阅读 · 0 评论 -
用2个栈实现队列
文章目录题目思路代码题目力扣链接思路代码//注意点//后面定义的函数某些都需要empty,因此定义empty时,一定要放到前。//经过观察发现,2个栈是的功能是横定的,一个pushST,一个popST。//当popST中为空后才将pushST中的元素pop到popSTtypedef int SDateType;typedef struct//对 匿名结构体 重命名。 //匿名是一种特殊的结构体定义形式, //但是最后不要定义2种同原创 2021-11-17 22:28:42 · 254 阅读 · 0 评论 -
用2个队列实现栈
文章目录题目思路代码总结题目力扣链接思路代码//注意点//后面定义的函数某些都需要empty,因此定义empty时,一定要放到前。//2个队列的功能一直在互换,判断条件是看那个队列为空//注意判断2个队列的情况typedef int QDateType;typedef struct node{ QDateType x; struct node* next;}Queuenode;//定义队列结点typedef struct { Queuenode* head;原创 2021-11-17 21:27:03 · 151 阅读 · 0 评论 -
括号匹配问题
文章目录题目思路代码总结题目力扣链接思路代码//这里发现,每次都需要知道前一个元素,因此栈更合适//匹配的机制是遇到右括号,就检测栈顶元素是否匹配,匹配就继续,否则fasletypedef char SDateType;typedef struct//对 匿名结构体 重命名。 //匿名是一种特殊的结构体定义形式, //但是最好不要定义2种同内容匿名结构体,因为编译器会把他们当成2种不同结构体类型 { SDateType* arr原创 2021-11-17 20:41:18 · 567 阅读 · 1 评论 -
复杂带有随机指针的单链表
文章目录题目思路代码总结题目力扣链接:思路代码/** * Definition for a Node. * struct Node { * int val; * struct Node *next; * struct Node *random; * }; */struct Node* newnode(){struct Node*node=(struct Node*)malloc(sizeof(struct Node));if(node==NULL)原创 2021-11-12 16:38:27 · 291 阅读 · 1 评论 -
链表经典题目
文章目录前言链表相关题目求链表中间结点求链表倒数第k个结点反转链表回文链表分割链表相交链表环线链表判断求链表环结点前言收集目前觉得经典的链表题目链表相关题目求链表中间结点博客求链表倒数第k个结点博客反转链表博客回文链表博客分割链表博客相交链表博客环线链表判断博客求链表环结点博客...原创 2021-11-12 16:39:18 · 1360 阅读 · 12 评论 -
求成环链表的环结点
文章目录题目思路:代码:总结题目力扣链接:https://leetcode-cn.com/problems/linked-list-cycle-ii/description/思路:代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ //先设置快慢指针,判断是否成环。 //定义一个指向头指针的指针,原创 2021-11-11 23:14:50 · 535 阅读 · 3 评论 -
判断链表是否成环
文章目录题目思路:代码总结题目力扣链接:https://leetcode-cn.com/problems/linked-list-cycle/思路:数学题目–追加问题理论证明:证明一(这步非常关键!!!):m%n=c; c%n=c;即m%n%n=c;因为m%n得到的摸必然是小于n的,因此c%n=c;证明二:代码bool hasCycle(struct ListNode *head) { //本题通过快慢指针,通过理论证明,只要保证快慢指针速度差为1原创 2021-11-11 23:13:47 · 316 阅读 · 3 评论 -
判断2单链表是否相交
文章目录题目:思路:代码:题目:力扣链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/submissions/思路:结点都是独立的,只是被某个链表,通过某种关系链接起来了。一旦2个链表相交,那么他们至少最后一个结点一定是相同。我们通过用例图得到交点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xKPNU2z-1636643518883)(相交链表.assets/imag原创 2021-11-11 23:12:41 · 283 阅读 · 1 评论 -
分割单链表
文章目录题目思路:代码题目牛客链接:https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70?tpId=8&&tqId=11004&rp=2&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking思路:结点都是独立的,链表只是以某种顺序将他们链接起来了。也就是说我们可以随意的改变这种顺序.因此我原创 2021-11-11 23:11:07 · 655 阅读 · 0 评论 -
反转链表--迭代与递归
文章目录前言:迭代(循环)法思路:代码:递归法思路:代码:前言:题目力扣链接:https://leetcode-cn.com/problems/reverse-linked-list/迭代(循环)法思路:链表是将独立的一个一个结点进行链接,形成一种链接关系,因此反转链表就是改变链接关系。如何反转:保证每个结点的next指向原先的前一结点就行,不过要特殊考虑原先NULL结点前的结点和原先的头结点。代码:struct ListNode* reverseList(struct ListN原创 2021-11-11 23:08:53 · 160 阅读 · 0 评论 -
判断回文链表
文章目录题目思路代码题目牛客链接:https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId=49&&tqId=29370&rp=1&ru=/activity/oj&qru=/ta/2016test/question-ranking思路方法一:单链表不像数组那样,可以随机访问。通过以中间结点为基准,去比较结点,思路可以但是非常麻烦,因为单链表是单向的,不好操作,从头开始,与原创 2021-11-11 23:07:37 · 118 阅读 · 0 评论 -
求单链表中间结点
文章目录题目思路:代码:题目力扣链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/description/思路:题外数学小题目:2个人A,B,A速度一个是1m/s.B是2m/s.那么1s后A走1m,B走2m 2s后A走2m,B走4m 35后A走3m,B走6m。 4s后A走4m,B走8m。假设(1)一段路长7m,那么4s后,B走到头多1m,A恰好走到路的中间。(2)一段原创 2021-11-11 23:06:09 · 155 阅读 · 0 评论 -
线性表之链表
文章目录前言链表什么是链表链表的分类单向链表单链表操作代码实现双向链表哨兵结点带头双向链表带头双向循环链表带头双向循环链表功能复现总结前言上一篇博客介绍了线性表中的顺序表—它存储的元素在内存中是连续的。但是内存中的数据可以是不连续的,顺序表是处理不了这种情形,因此链表—将内存中不联系的独立的元素链接起来。链表什么是链表概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中next指针链接次序实现的由此可见链表是一个结构体。另外链表只是将独立的结点链接起来,原创 2021-11-11 23:04:18 · 167 阅读 · 2 评论 -
带头双向成环链表功能复现
文章目录前言:结构体定义初始化打印指定pos位置插入头插尾插指定pos位置删头删尾删查找销毁main效果展示前言:复现带头双向成环链表功能中将环结点设置为哨兵结点。虽然带头双向成环链表结构上很复杂,但是实现起来也不是太难。因为有哨兵结点原因,一方面只需要在初始化的时候进行二级传参,另外一方面是不需要考虑空链表,因此关于增删减查只需要一级指针。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MByXcvtZ-1636642417217)(演示文稿1.p原创 2021-11-11 22:54:24 · 395 阅读 · 0 评论 -
单链表功能复现
文章目录前言结构体定义生成结点打印链表指定位置插指定位置删查找结点链表销毁main效果展示总结前言介绍单向链表的增删减查单链表我们常用一个指向链表头的指针,来对链表进行有关操作。结构体定义对于单链表,需要有指向链表头的指针,和指向下一个结点的next指针。typedef int SLTDateType;typedef struct SListNode{ SLTDateType date; struct SListNode* next;}SLTNode;生成结点原创 2021-11-11 22:53:17 · 380 阅读 · 1 评论 -
线性表--动态顺序表
文章目录前言线性表顺序表动态顺序表结构体声明初始化结构体判断数组是否满指定位置,插入元素头插元素尾插元素指定位置删元素头删元素尾删元素查找元素打印数组销毁申请的空间菜单效果展示总结前言本篇介绍数据结构中存储元素–线性表中的顺序表线性表线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储原创 2021-11-07 14:36:08 · 584 阅读 · 5 评论 -
《数据结构与算法》第一篇
文章目录前言:算法高效性的2个主要指标:时间复杂度,空间复杂度时间复杂度(执行算法的时间成本)序章:普通函数的时间复杂度递归函数的时间复杂度空间复杂度(执行算法的空间成本):普通函数的空间复杂度:递归函数的空间复杂度:总结前言:博主新开了一个专栏《数据结构与算法》,望各位大佬,多多支持,非常感谢!博主目前处于数据结构的入门阶段,博文有什么错误,望各位大佬 不吝赐教,非常感谢!就像C生万物一样,数据结构与算法之间的是形影不离的,谈到数字节构必然要谈算法的。算法高效性的2个主要指标原创 2021-09-08 22:38:05 · 531 阅读 · 13 评论