04(数据结构考研)串相关操作代码

简介: 04(数据结构考研)串相关操作代码

❤️求子串❤️

#include <stdio.h>
#include <cstdlib>
#define MAXSIZE 255//预定义串的最大长度为255
typedef struct {
    char ch[MAXSIZE];//静态数组的方式存储
    int length;
}SString;
//求子串
bool SubString(SString &Sub,SString S,int pos,int len){
    //子串范围越界
    if(pos+len-1>s.length)
        return false;
    for(int i=pos;i<pos+len;i++)
        Sub.ch[i-pos+1]=S.ch[i];
    Sub.length=len;
    return true;
}
int main(){
    return 0;
}

❤️子串的比较操作❤️

//比较操作
int StrCompare(SString S,SString T){
    for(int i=1;i<=S.length&&i<=T.length;i++){
        if(S.ch[i]!=T.ch[i])
            return S.ch[i]-T.ch[i];
    }
    //扫描过的所有字符都相同,则长度长的串更大
    return S.length-T.length;
}

❤️子串的定位操作❤️

int Index(SString S,SString T){
    int i=1,n=StrLength(S),m=StrLength(T);
    SString sub;//用于暂存子串
    while (i<=n-m+1){
        SubString(sub,S,i,m);
        if (StrCompare(sub,T)!=0)
            ++i;
        else
            return i;//用于返回子串在主串中的位置
    }
    return 0;
}

❤️朴素模式匹配算法❤️

int Index(SString S,SString T){
    int k=1;
    int i=k,j=1;
    while(i<=S.length && j<=T.length){
        if(S.ch[i]==T.ch[j]){
            ++i;
            ++j;
        } else{
            k++;
            i=k;
            j=1;
        }
    }
    if(j>T.length)
        return k;
    else
        return 0;
}

❤️KMP算法❤️

int Inde_KMP(SString S,SString T,int next[]){
    int i=1,j=1;
    while(i<S.length&&j<=T.length){
        if (j==0||S.ch[i]==T.ch[j]){
            ++i;
            ++j;//继续比较后续字符
        } else
            j=next[j];//模式串向右移动
    }
    if(j>T.length)
        return i-T.length;//匹配成功
    else
        return  0;
}


目录
相关文章
|
1天前
05(数据结构考研)树相关操作代码
05(数据结构考研)树相关操作代码
6 0
|
1天前
03(数据结构考研)队列相关操作代码
03(数据结构考研)队列相关操作代码
9 0
|
1天前
02(数据结构考研)栈相关操作代码
02(数据结构考研)栈相关操作代码
6 0
|
1天前
01(数据结构考研)线性表相关操作代码
01(数据结构考研)线性表相关操作代码
12 0
|
6天前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
81 64
|
15天前
|
算法 安全 测试技术
golang 栈数据结构的实现和应用
本文详细介绍了“栈”这一数据结构的特点,并用Golang实现栈。栈是一种FILO(First In Last Out,即先进后出或后进先出)的数据结构。文章展示了如何用slice和链表来实现栈,并通过golang benchmark测试了二者的性能差异。此外,还提供了几个使用栈结构解决的实际算法问题示例,如有效的括号匹配等。
golang 栈数据结构的实现和应用
|
1天前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
14 2
|
6天前
|
Go
数据结构之 - 深入了解栈数据结构
数据结构之 - 深入了解栈数据结构
16 5
【数据结构】--- 栈和队列
【数据结构】--- 栈和队列
|
15天前
01_设计一个有getMin功能的栈
01_设计一个有getMin功能的栈

热门文章

最新文章