数据结构与算法
文章平均质量分 64
数据结构算法相关的讲解和笔记
Guqing_f
努力学习编程的小萌新
展开
-
KMP算法及其优化
KMP算法时间复杂度O(n + m)NFA:不确定性有穷状态自动机int *getNext(const char *t, int *len){ *len = strlen(t); int *next = (int *) malloc (sizeof(int) * (*len)); // next[i] = j : 以i位置结尾,所匹配到的最长前缀是j这个 位置 next[0] = -1; //匹配最长前缀不能包含自己,第一位的最长前缀为-1 for(int i = 1原创 2022-05-09 08:38:41 · 507 阅读 · 0 评论 -
六种字符串匹配算法详解(含代码演示)
1. Brute-Force算法2. Rabin-Karp Hash算法3. Kmp算法4. Kmp的优化算法5. Sunday算法6. Shift-And算法ps:字符串匹配其实是单模匹配问题1.Brute-Force 朴素匹配算法(暴力匹配)时间复杂度:O(n*m)//返回 文本串s中第一次查找到模式串t的位置int brute_force(const char *s, const char *t){ //扫描文本串的每一位 for(int i = 0; s[i];原创 2022-05-08 18:45:25 · 7107 阅读 · 0 评论 -
栈和队列详解(含代码演示)
1.栈栈是一种只能在一段进行插入和删除的线性数据结构,通常使用线性表来实现。栈满足 **后进先出(LIFO/ last in first out)**的特性由于栈不能像线性表一样随意进行插入删除,因此可以将栈视为一种功能受限的线性表。栈的管理结点和线性表的管理结点相同:顺序表实现栈:数据域(data)、栈的总容量(total)、栈的大小(len)链表实现栈:栈顶结点(头结点)的指针(*head)、栈的大小(len)(1)顺序栈的增删改查【顺序栈也可以使用和顺序表一样的扩容方式】#includ原创 2022-04-27 18:05:31 · 852 阅读 · 0 评论 -
线性表详解(代码演示)
1.顺序表顺序表是指用一段连续的地址,依次存放数据元素的线性数据结构,这种存储方式使得顺序表的物理结构与逻辑结构都是连续的。q1:这和平时再函数中定义的数组有什么区别?ans1:函数中的数组被存放在栈段中,而栈段有系统限制的大小【ulimit -s】。因此顺序表往往使用再堆段中操作管理动态数组的方式实现。(1)管理结点如果把数据结构比作仓库,数据元素比作货物,除了货物之外,还应该有货物的数量,货架的数量等信息。要体现这些信息,就需要“管理结点”。eg: 顺序表中,管理结点内部一般存放:数据域原创 2022-04-26 21:27:00 · 476 阅读 · 0 评论 -
红黑树(含图解和代码参考)
红黑树的介绍、插入与删除原创 2022-04-25 15:30:11 · 2955 阅读 · 0 评论 -
数据结构的介绍
基础数据结构的介绍。具体实现将持续更新原创 2022-04-25 12:38:43 · 240 阅读 · 0 评论 -
AVL树(含图解)
AVL树的介绍、讲解、图示、代码演示原创 2022-04-20 13:35:01 · 645 阅读 · 0 评论 -
平衡二叉排序树(查找树)
二叉排序树(查找树)的介绍与代码演示原创 2022-04-19 19:41:54 · 424 阅读 · 0 评论 -
一下午了终于写出来的归并(合并)排序(小白式总结)
在算法图解上面学算法,然后看到提到了合并(归并)排序,但是又没有具体说是啥样的,自己好奇就各种百度瞅了……搞了一下午总算彻彻底底理解而且写出代码来了。我的图解全是自己画的手稿,太丑就不放上来了,各路大神们的图都很清晰易懂。这里提一下我的理解方法(我实在是脑子笨,没办法像别人一样看一眼就看明白是咋写的)看图的时候是很好理解了,的确理解得很快,这里感谢一下在各个博客里面大神们的图(我前前后后打开了...原创 2020-04-23 18:28:45 · 445 阅读 · 0 评论