知识大全 数据结构串之串运算的实现
Posted 位移
篇首语:惜时专心苦读是做学问的一个好方法。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构串之串运算的实现相关的知识,希望对你有一定的参考价值。
顺序串上的子串定位运算
子串定位又称串的模式匹配(Pattern Matching)或串匹配(String Matching) 在串匹配中 一般将主串称为目标(串) 子串称为模式(串) 假设T为目标串 P为模式串 且设 T= t t …tn P= p p …pm ( <m≤n) 用T[i j]表示T的子串 titi+ …tj ( ≤i≤j≤n ) 用P[i j]表示P的子串 pipi+ …pj ( ≤i≤j≤m ) 串匹配实际上是对于合法的位置 ≤i≤n m 依次将目标串中的子串T[i i+m ]和模式串P[ m ]进行比较 若T[i i+m ]=P[ m ](即 titi+ …ti+m = p p …pm ) 则称从位置i开始的匹配成功 亦称模式P在目标T中出现 若T[i i+m ]≠P[ m ](即存在某个 ≤j≤m 使得 ti+j ≠ pj ) 则称从位置i开始的匹配失败 上述的位置i又称为位移 当T[i i+m ]=p[ m ]时 i称为有效位移 当T[i i+m ]≠p[ m ]时 i称为无效位移 朴素的串匹配算法 基本思想 用一个循环来依次检查n m+ 个合法的位移i( ≤i≤n m)是否为有效位移 该算法至多匹配n m+ 次 每匹配要做m次比较 故算法至多比较m*(n m+ )次 时间复杂性为O((n m+ )*m) 通常情况下 m的值远小于n的值 时间复杂性可粗略地记为O(n*m) 链串上的子串定位运算
cha138/Article/program/sjjg/201311/23311相关参考
串的链式存储cha138/Article/program/sjjg/201311/23382
串的顺序存储 串的顺序存储结构简称顺序串顺序串是用一组地址连续的存储单元依次存储串中的字符序列 静态存储分配的顺序串 顺序串最简单的描述形式是直接使用定长的字符数组来定义数组的上界预先
串(String)(或字符串)是由零个或多个字符组成的有限序列表示方法S=aa……an 其中S是串名双引号括起的字符序列是串值ai(≤i≤n)可以是字母数字或其它字符n为串的长度 将串值括起来的双
队列的定义 队列(Queue)也是一种运算受限的线性表它只允许在表的一端进行插入而在另一端进行删除允许删除的一端称为队头(Front)允许插入的一端称为队尾(Rear) 队
单链表基本运算的实现 创建空单链表 链表与顺序表不同它是一种动态管理的存储结构链表中的每个结点占用的存储空间不是预先分配而是运行时系统根据需求生成的因此建立空单链表就是建立一个带头结点的空表该
顺序表插入运算的操作步骤如下 ()检查待插入的表是否存在若不存在退出; ()判断顺序表是否满(即表长length是否大于等于MAXSIZE)?若满退出;否则执行(); ()检查插入位置的合法
销毁单链表 单链表被构造使用完后由于其结点均为动态分配的内存空间所以必须要销毁以释放空间否则会造成申请的内存不能释放单链表的销毁操作是创建操作的逆运算由于要修改单链表的头指针的指针变量所以要将头
删除 删除运算是指删除单链表的第i个结点即将第i个元素结点的指针域指向第i+个元素结点要实现删除首先要找到第i个元素结点前驱结点设单链表第i个元素结点指针为p要删除第i个元素结点(指针为q)操作
算法 删除算法的时间性能分析 与插入运算相同其时间主要消耗移动在表中元素上删除第i个元素时其后面的元素ai+~an都要向上移动一个位置共移动了ni个元素所以平均移动数据元素的次数为 > 由
双向链表结点的定义如下 typedefstructnode DataTypedata; structnode*prior*next; DuNode*DLinkList; 和单链表类似双向