赞
踩
在数据结构中,串(String)是一种重要的数据类型,用于表示字符序列。串的定义和实现涵盖了字符的存储、基本操作及其在计算机科学中的应用。
串是由零个或多个字符组成的有限序列,通常用一对双引号括起来。例如,"hello"和"world"都是串。在计算机中,串主要有以下几种表示方式:
'\0'
)填充。串的基本操作包括串的创建、销毁、复制、连接、比较、子串提取、模式匹配等。
串的创建和销毁:
串的复制:
串的连接:
串的比较:
子串提取:
模式匹配:
以下是C语言中串的基本操作的实现示例。
#include <stdio.h> #include <stdlib.h> #include <string.h> // 创建串 char* createString(const char* str) { char* newStr = (char*)malloc(strlen(str) + 1); if (newStr != NULL) { strcpy(newStr, str); } return newStr; } // 销毁串 void destroyString(char* str) { free(str); } int main() { char* str = createString("hello"); printf("String: %s\n", str); destroyString(str); return 0; }
// 复制串 char* copyString(const char* str) { char* newStr = (char*)malloc(strlen(str) + 1); if (newStr != NULL) { strcpy(newStr, str); } return newStr; } int main() { char* str1 = createString("hello"); char* str2 = copyString(str1); printf("Original String: %s\n", str1); printf("Copied String: %s\n", str2); destroyString(str1); destroyString(str2); return 0; }
// 连接串 char* concatenateString(const char* str1, const char* str2) { char* newStr = (char*)malloc(strlen(str1) + strlen(str2) + 1); if (newStr != NULL) { strcpy(newStr, str1); strcat(newStr, str2); } return newStr; } int main() { char* str1 = createString("hello"); char* str2 = createString("world"); char* str3 = concatenateString(str1, str2); printf("Concatenated String: %s\n", str3); destroyString(str1); destroyString(str2); destroyString(str3); return 0; }
// 比较串 int compareString(const char* str1, const char* str2) { return strcmp(str1, str2); } int main() { char* str1 = createString("apple"); char* str2 = createString("banana"); int result = compareString(str1, str2); if (result < 0) { printf("String1 is less than String2\n"); } else if (result > 0) { printf("String1 is greater than String2\n"); } else { printf("String1 is equal to String2\n"); } destroyString(str1); destroyString(str2); return 0; }
// 提取子串 char* substring(const char* str, int pos, int len) { if (pos + len > strlen(str)) { len = strlen(str) - pos; } char* subStr = (char*)malloc(len + 1); if (subStr != NULL) { strncpy(subStr, str + pos, len); subStr[len] = '\0'; } return subStr; } int main() { char* str = createString("hello world"); char* subStr = substring(str, 6, 5); printf("Substring: %s\n", subStr); destroyString(str); destroyString(subStr); return 0; }
// 模式匹配 int findSubstring(const char* str, const char* pattern) { char* pos = strstr(str, pattern); if (pos != NULL) { return pos - str; } return -1; } int main() { char* str = createString("hello world"); char* pattern = createString("world"); int index = findSubstring(str, pattern); if (index != -1) { printf("Pattern found at index: %d\n", index); } else { printf("Pattern not found\n"); } destroyString(str); destroyString(pattern); return 0; }
串(String)是表示字符序列的重要数据类型。通过理解串的定义和实现,我们可以更好地进行字符串操作,包括创建、销毁、复制、连接、比较、子串提取和模式匹配等。C语言提供了丰富的库函数,可以方便地实现这些操作。在实际应用中,选择合适的串表示方式和实现方法,可以有效提高程序的性能和内存利用率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。