![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构,算法与思维
文章平均质量分 83
数据结构,算法,思维是不可分开的,相辅相成,在不同的场合发挥意想不到的效果
addict_jun
到底是以欲望,野心为燃料,还是顺气自然,又或者以高尚的理想去照亮前方的路呢。
展开
-
C++数据结构之字符串
这里是C++数据结构的字符串,主要是对字符串的一个总结,以及一些基础操作,还详细讲解了单字符串匹配和多模式匹配算法,详情可以跳转链接进入。废话说到这里,开始上干货。原创 2022-10-28 10:49:45 · 526 阅读 · 0 评论 -
C++之多模式匹配问题
给定一个文本串 T=t1t2…tn,再给定一组模式串 P=p1,p2,…,pr,其中每个模式串 pi 是定义在有限字母表上的字符串 pi=p1ip2i…pni。要求从文本串 T 中找到模式串集合 P 中所有模式串 pi 的所有出现位置。模式串集合 P 中的一些字符串可能是集合中其他字符串的子串、前缀、后缀,或者完全相等。解决多模式串匹配问题最简单的方法是利用「单模式串匹配算法」搜索r遍。这将导致预处理阶段的最坏时间复杂度为 O(|P|),搜索阶段的最坏时间复杂度为 O(r∗n)。Wu-Manber。原创 2022-10-28 10:40:25 · 1230 阅读 · 0 评论 -
C++之单字符串匹配问题
BM算法非常的复杂,而且也会有效率不高的情况,但是它常态的效率却是KMP的2~3倍,而KMP的效率可以说是非常快了,所以说BM还是非常经典的算法。每次对同一个问题,不同的解决办法时,我们总需要思考和总结他们对这个问题的优化思路是什么?牺牲一定的效率,提高代码的健壮性和稳定性。面对某个多次调动的表达式,通过预处理,或者缓存来实现加速。通过空间来换时间。又或者对于查找,采用hash结构来提高效率。等等,都是值得我们思考和总结的。如果有用希望得到大家的二连,同时也感觉大家的阅读。原创 2022-10-27 12:24:57 · 1140 阅读 · 0 评论 -
C++数据结构之哈希表
接下来是数据结构中哈希表的总结,哈希表在我以前学python的时候,也被称为散列表。简单的理解来说,哈希表我们翻越的拼音字典,一个拼音对应一个汉字或多个汉字。原创 2022-10-24 19:05:44 · 1180 阅读 · 0 评论 -
C++数据结构之队列
这里详细总结一下C++中队列这个数据结构,涉及队列的基本知识,以及队列的变种还有相应的应用场景等,总体来说算是一个知识的检索,不过遇到自己感兴趣的知识,还是会对其进行尝试。原创 2022-10-23 17:33:32 · 2083 阅读 · 0 评论 -
C++数据结构之堆栈
逆波兰式(Reverse Polish Notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)。逆波兰算法是典型的使用了栈结构,具体情况可以通过上述链接进入。原创 2022-10-22 20:07:57 · 692 阅读 · 0 评论 -
C++基础算法之逆波兰
中缀向后缀进行变化的核心是s2,我们可以认为s2是一个单调递减栈,但又不完全想,因为有括号()可以让某些运算符的“优先级”无限拔高!这里我的理解的是()是一个整体的作用域,而左括号(可以看成是优先级最高的运算符,同样也是作用域的起始,而右括号)则是这个作用域收尾的时刻。那么这样看的话,依然是只有高优先级的运算符在上,第优先级运算符在下,而作用域这个整体的优先级是最高的。而使用单调递减栈的作用就是找到该元素右边第一个优先级小于自己的运算符,然后对前面的值进行运算的操作。。。原创 2022-10-22 20:07:12 · 1996 阅读 · 0 评论 -
C++数据结构之单调栈
单调栈(Monotone Stack):一种特殊的栈。在栈的「先进后出」规则基础上,要求「从 栈顶 到 栈底 的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」。原创 2022-10-22 20:06:19 · 1963 阅读 · 0 评论 -
C++数据结构之链表栈
这里定义了默认构造和拷贝构造,没定义有参构造。然后是堆栈基础操作,判空,判满,入栈,出栈以及获取栈顶元素等操作。最后还加了size(),用于判断链表中的数据是否存在。数据成员则有两个,分别是当前的元素个数、栈指针。接下来,我们看各自的实现。原创 2022-10-22 15:56:05 · 513 阅读 · 0 评论 -
C++数据结构之顺序栈
这里定义了有参构造和拷贝构造,没定义默认构造,因为这样就涉及动态扩容,这里就不做实现。然后是堆栈基础操作,判空,判满,入栈,出栈以及获取栈顶元素等操作。最后还加了size(),和重载了[]运算符,一个共有,一个私有。数据成员则有三个,分别是当前的元素个数、栈的容量以及栈指针。接下来,我们看各自的实现。原创 2022-10-22 15:42:06 · 1354 阅读 · 0 评论 -
C++数据结构之链表(详解)
链表的定义一种线性表数据结构。它使用一组任意的存储单元,来存储一组具有相同类型的地址,但是链表一般是内嵌到数据结构中,而数据结构的类型可以是不同的。原创 2022-10-18 13:34:09 · 3746 阅读 · 0 评论 -
C++链表的排序实现
对于链表的排序算法,除了希尔排序之外,且堆排序不建议,其他排序方法都是支持的,如下:冒泡排序,选择排序,插入排序,归并排序,快速排序,计数排序,桶排序和基数排序。下面废话不多说。原创 2022-10-18 12:56:18 · 4979 阅读 · 0 评论 -
C++之内核链表和企业链表
作为数据结构中的基础结构之一,链表的优点就是可以不要求连续的存储空间,但是没有了随机访问,在按索引增删改查,似乎效率没有数组快,但是链表也有它优势的地方,linux内核和企业上,对于链表的时候,和我们一般学的方法有所不同,这里详细讲解一下。废话说到这里,开始上干货。原创 2022-10-13 09:56:52 · 532 阅读 · 0 评论 -
C++数据结构之循环链表
循环链表对比与单链表,它没有指针指向NULL,而是构成了一个圈,但是基本的增删改查相差不大,主要是结束循环的判断条件。循环链表在某些调度问题上会用到。对于链表操作,最关键的就是申明一个临时指针去访问链表,这样链表头节点的位置就不会因为增删改查操作而改变原创 2022-09-17 10:09:27 · 1818 阅读 · 0 评论 -
C++数据结构之双链表详解
这里头节点是不存储数据的,且单向链表的操作,双向链表都可以做到,这里讲一下双向链表的特点。如果想看一些基础的增删改查工作,直接查看单链表即可。原创 2022-09-16 11:17:02 · 1172 阅读 · 1 评论 -
C++数据结构之单链表
这里详细讲解了C++数据结构中的单链表的实现,采用了头节点存储数据和不存储数据两种方式对单链表的各种操作做了实现。原创 2022-09-14 16:31:40 · 1594 阅读 · 0 评论 -
C++数据结构之数组详解
数组(Array):一种线性表数据结构。它使用一组连续的内存空间,来存储一组具有相同类型的数据。上述链接也提到了,python的list已经不能算是严格的数组了,它的list结构可以存储不同类型的数据。逻辑结构:线性表。存储结构:使用一组连续的内存空间。关于数组的内容就到这里了,我们侧重的是数组这个数据结构,排序算法的具体实现以及优化操作这里不做详细讲解,可以参考最前面的链接。原创 2022-09-04 21:45:35 · 2344 阅读 · 3 评论