- 博客(3)
- 收藏
- 关注
原创 KMP算法中的NEXT[ ] 数组手算方法(严蔚敏版本)
如:aba,已经知道我们需要计算‘aba’的next数组,已知‘ab’的next数组在‘b’这位置的值为1,那么我们这样画一个括号,即‘ab)a’,来计算‘)’后的a的next数组的值,这样方便看。在第二个b前画个括号,即‘abaa)b’,前缀为第一个‘a’,后缀为第三个‘a’,已经知道了第四个索引(第三个‘a’)位置的next数组的值为2,所以我们要匹配从前缀开始数的前两个元素,即'ab',同理,从后缀开始数两个元素'aa'(,所以在‘abaab’索引为5即第二个‘b’的位置的next数组的值为2。
2025-04-01 12:05:00
795
原创 带头结点的单链表(C语言)
带头结点的单链表是一种特殊的单链表数据结构,其特点是链表的第一个结点是一个特殊的结点,称为头结点(header node)。头结点不存储实际数据,主要用于方便链表的操作和管理。特点头结点的存在:头结点位于链表的最前端,它不存储实际的数据元素,仅用于标识链表的开始位置。指针域的指向:头结点的指针域指向链表的第一个实际数据结点,即首元结点。操作的统一性:由于头结点的存在,对于链表的插入、删除等操作,无论是在链表头部、中间还是尾部进行,其操作方式都是一致的,无需对头结点进行特殊处理。优势。
2025-03-26 08:56:36
1512
原创 栈的递归调用(C语言)
递归通常把一个大型的复杂问题层层转化为一个与原则问题相似的规模较小的问题来求解,递归策略只需要少量的代码就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。但在通常情况下,它的效率并不是太高。递归的效率低下,但优点是代码简单,容易理解。太多层的递归可能会导致栈溢出,因为递归调用可能包含了很多的重复计算,可以理解为树的深度优先遍历。简单来说,若在一个函数、过程或数据结构的定义中又应用了它自身,则这个函数、过程或数据结构称为是。注意,factorial()这个函数是专门用来算阶乘的。
2025-03-21 09:12:18
641
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人