![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《大话数据结构》
大话数据结构
叨陪鲤
哈
展开
-
二叉树的创建和遍历
1. 二叉树的创建/*创建二叉树*/int createBiTree(binaryTree_pt *T){ eleType val; scanf("%c", &val); if( val == '#' ){ *T=NULL; }else{ *T = (binaryTree_pt)malloc(sizeof(binaryTree_st)); if(!*T){ printf("%s():%d : Malloc error\n", __func__, __LINE__)原创 2020-07-08 08:23:43 · 4433 阅读 · 0 评论 -
KMP算法的改进
KMP算法的改进KMP算法已经在极大程度上提高了子符串的匹配效率,但是仍然有改进的余地。1. 引入的情景下面我们就其中的一种情况进行分析:主串T为"aaaabcde…"子串S为"aaaade"那么容易求得子串的next[]={0,1,2,3,4}下标12345子串aaaadnext01234当使用KMP算法进行匹配时,由于T[5]!=S[5], 因此子串指针回溯,子串回溯后变为T[5]与S[4]的关系,依然不等, 子串继续回原创 2020-07-02 08:54:36 · 7155 阅读 · 0 评论 -
KMP算法中的几个疑问
KMP算法next数组求解实现首先我们通过应用场景将KMP算法中用到的名词做一个说明:在一个字符串(string1)中查询是否存在另一个字符串(string2)。在字符串匹配算法中,我们通常将字符串string1成为主串;字符串string2成为子串。下面我们将分别说明朴素模式匹配算法和KMP算法,并重点说明KMP中next的求解方式。1. 朴素模式匹配算法朴素模式匹配算法步骤:从主串第一个元素和子串第一个元素开始匹配,如果相等,同时后移匹配后续字符;如果不相等,主串指针和子串指针同原创 2020-06-30 08:59:20 · 4843 阅读 · 0 评论 -
数据结构(三):双向循环链表的函数实现
双向循环链表由于增加了一个前向指针,并且引入了循环,因此操作上有些复杂。头结点在双向循环链表依然保留。一、 操作示意图1. 双向循环带头链表的空链表如图所示:2. 双向循环带头链表一般情况如图所示:3. 双向链表的插入操作: 先连接上一节点,再连接下一节点; 然后连接下一节点的前驱节点,最后修改前一节点的后驱节...原创 2019-05-18 15:49:57 · 4382 阅读 · 0 评论 -
数据结构(二):线性表之链式存储函数实现
线性表的链式存储的主要操作的实现:注: 该链表包含头结点。0. 头文件的宏定义:#define SUCCESS 1#define FAILED 0typedef int Status;typedef int dataType;typedef struct node_{ dataType data; struct node_ *next;}LinkNo...原创 2019-05-18 14:52:34 · 4426 阅读 · 0 评论 -
数据结构(一):线性表的顺序存储和链式存储
1. 线性表的定义和概念:线性表(List) :零个或多个数据元素的有限系列。线性表有两个重要的特性:1)线性表中元素的个数是有限的; 2)线性表中每个元素是有序的;In another opinon, 除第一个元素无前驱节点,最后一个元素无后继节点之外,每一个元素都有且只有一个前驱节点和一个后继结点...原创 2019-05-18 13:20:02 · 13643 阅读 · 0 评论