数据结构:串
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.优缺点:
总结
优点 | 缺点 |
---|---|
简单易用 | 空间效率低 |
广泛应用 | 操作效率问题 |
灵活性 | 不可变性(某些语言) |
高效的存储和访问 | 模式匹配复杂度高 |
丰富的算法支持 | 编码问题 |