/* 数据结构——串笔记 串:由零个或多个字符组成的有限序列。 串也有两种储存方式,顺序储存和链式储存 1.顺序表示的串——顺序串 一般使用字符型数组储存。 确定串的长度有两种方法。一是:在串的末尾加一个结束标记(在C语言 中系统自动在串值的末尾加一个' '作为结束标记 ),再使用 strlen 函数得到串的长度。二是:增加一个变量 len 用来储存串的长度。 */ // 顺序串的实现即基本操作 # include <stdio.h> # include <stdlib.h> # include <malloc.h> // 定义一个穿的最大长度 # define MAXSIZE 50 // 储存结构,此处采用增加一个变量 len 用来储存串的长度 struct String { char * str; int len; }; // 串的创建 void Create_String(String * S); // 串的初始化 void Init_String(String * S); // 串的赋值 void String_Assign(String * S, char * str); // 串的遍历 void Travel_String(String * S); // 判断串是否为空 bool Is_Empty(String * S); // 求串的长度 int String_Length(String * S); // 串的复制 void String_Copy(String * S, String * T); // 比较两个串的大小,返回两个串的长度的差值 int String_Compare(String * S, String * T); // 在串S的pos位置插入串T void String_Insert(String * S, String * T, int pos); // 删除串S中从位置pos开始的len个字符 bool String_Delete(String * S, int pos, int len); // 将串T连接到串S的末尾 void Strint_Concat(String * S, String * T); // 清空串 void String_Clear(String * S); int main(void) { String str1; Create_String(&str1); Init_String(&str1); char ch1[20] = "AAAA"; String_Assign(&str1, ch1); Travel_String(&str1); return 0; } void Create_String(String * S) { S->str = (char *)malloc(sizeof(char) * MAXSIZE); if (NULL == S->str) { printf("动态内存分配失败! "); exit(-1); } return; } void Init_String(String * S) { S->len = 0; return; } void String_Assign(String * S, char * str) { int cnt; for (cnt = 0; str[cnt] != '