数据结构:串
1.概念:
由零个或多个字符组成的有限序列。零个字符的串称为空串,长度为零,串中任意个连续的字符组成的子序列被称为该串的子串。包含子串的串相应的称为主串。通常称字符在序列的序号为该字符在串中的位置。子串在主串的位置则以子串的第一个字符在主串中的位置来表示。
存储结构
-  
顺序存储:使用数组存储字符,常见于C语言中的字符数组。
 -  
链式存储:使用链表存储字符,每个节点存储一个或多个字符。
 
2.串的操作:
1.查找子串
2.求一个子串
3.在串的某一个位置插上一个子串以及删除一个子串
3.代码实现:(C语言中的字符数组)
#include <stdio.h>
#include <string.h>
int main() {
    char str1[] = "Hello";
    char str2[] = "World";
    char result[20];
    // 连接操作
    strcpy(result, str1);
    strcat(result, " ");
    strcat(result, str2);
    printf("连接后的字符串: %s\n", result);
    // 比较操作
    if (strcmp(str1, str2) == 0) {
        printf("字符串相等\n");
    } else {
        printf("字符串不相等\n");
    }
    // 求子串操作
    char substr[10];
    strncpy(substr, str1, 3);
    substr[3] = '\0';
    printf("子串: %s\n", substr);
    return 0;
} 
运行结果:
连接后的字符串: Hello World
字符串不相等
子串: Hel 
4.应用实例:
-  
文本编辑:查找、替换、插入、删除等操作。
 -  
生物信息学:DNA序列匹配。
 -  
数据压缩:字符串压缩算法。
 -  
搜索引擎:关键词匹配。
 
5.优缺点:
总结
| 优点 | 缺点 | 
|---|---|
| 简单易用 | 空间效率低 | 
| 广泛应用 | 操作效率问题 | 
| 灵活性 | 不可变性(某些语言) | 
| 高效的存储和访问 | 模式匹配复杂度高 | 
| 丰富的算法支持 | 编码问题 | 
