数据结构 串基本操作代码
简介
本文档介绍了数据结构中串的基本操作代码,包括串的定义、串的赋值、串的比较、串的连接、串的替换等。
1.串的定义
串是由零个或多个字符组成的有限序列,是字符串的抽象数据类型。常用的串类型包括顺序串和链式串。
1.1 顺序串
顺序串是使用数组来存储字符序列的数据结构。其定义如下:
```c
define MaXSiZe 100 // 串的最大长度
typedef struct {
char data[MaXSiZe]; // 存储串的字符数组
int length; // 串的长度
} SqString;
```
1.2 链式串
链式串是使用链表来存储字符序列的数据结构。其定义如下:
```c
typedef struct LNode {
char data; // 存储串的字符
struct LNode next; // 指向下一个节点的指针
} LNode, LinkString;
```
2.串的基本操作
2.1 串的赋值字符串长度17模式串长度
将一个字符串赋值给一个串,可以使用字符串赋值函数`strcpy`或者循环遍历字符串赋值。
2.1.1 使用strcpy函数赋值
```c
include <string.h>
void Strassign(SqString s, char str) {
strcpy(s->data, str);
s->length = strlen(str);
}
```
2.1.2 使用循环遍历赋值
```c
void Strassign(SqString s, char str) {
int i;
for (i = 0; str[i] != '\\0'; i++) {
s->data[i] = str[i];
}
s->length = i;
s->data[i] = '\\0';
}
```
2.2 串的比较
比较两个串是否相等,可以使用字符串比较函数`strcmp`或者循环遍历比较。
2.2.1 使用strcmp函数比较
```c
include <string.h>
int Strcompare(SqString s1, SqString s2) {
return strcmp(s1.data, s2.data);
}
```
2.2.2 使用循环遍历比较
```c
int Strcompare(SqString s1, SqString s2) {
int i;
for (i = 0; i < s1.length && i < s2.length; i++) {
if (s1.data[i] != s2.data[i]) {
return s1.data[i] - s2.data[i];
}
}
return s1.length - s2.length;
}
```
2.3 串的连接
将两个串连接起来,可以使用字符串连接函数`strcat`或者循环遍历连接。
2.3.1 使用strcat函数连接
```c
include <string.h>
void Strconcat(SqString s1, SqString s2) {
strcat(s1->data, s2.data);
s1->length = strlen(s1->data);
}
```
2.3.2 使用循环遍历连接
```c
void Strconcat(SqString s1, SqString s2) {
int i, g;
for (i = 0; i < s2.length; i++) {
s1->data[s1->length + i] = s2.data[i];
}
s1->length += s2.length;
s1->data[s1->length] = '\\0';
}
```
2.4 串的替换
将串中指定的子串替换为另一个串,可以使用字符串替换函数`str_replace`或者循环遍历替换。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论