C语言KMP无回溯模式匹配算法,第五讲字符串模式匹配.ppt

第五讲字符串模式匹配

作业:课程网站下载环境。 13号前提交 * 字符串与模式匹配 2016-3-11 胡俊峰 主要内容 C语言的字符串操作(复习) 字符串的抽象数据类型 模式匹配算法 字符串概念 字符串简称串,是一种特殊的线性表,其特殊性主要在于表中的每个元素是一个字符。 一个串可以记作s="s0s1…sn-1"(n ≥ 0),其中s是串的名字,双引号括起来的字符序列s0s1…sn-是串的值。 例如: A = "123"B = "ABBABBC"C = "BB"D = "BB "E = "" 字符数组与字符串 由字符串构成的线性表 C语言中定义的字符串 存储结构: 字符指针 … \0 操作: ?char *strcpy(char *dst, char *sorc) int strcmp(char *str1, char *str2);? char* strcat(char *dest, const char* sorc,size); char* strstr(char *str, const char *strSearch); size_t strlen(const char* str); gets(char *); puts(char*); Strstr()函数 char *strstr(char *str1, char *str2); #include #include int main(void){??? char str1[] ="aaaabcabcdabcbabcdryf", *str2 = "abc", *ptr;ptr = str1;??? while((ptr = strstr(ptr, str2))!=NULL)??????? printf("The substring is: %s\n", ptr++);??? return 0; } String createNullStr (void) 创建一个空串。 int IsNullStr ( String s ) 判断串s是否为空串,若为空串,则返回1,否则返回0。 int length ( String s ) 返回串s的长度。 String concat (String s1, Sting s2 ) 返回将串s1和s2拼接在一起构成的一个新串。 String subStr (String s, int i, int j ) 在串s中,求从串的第i个字符开始连续j个字符所构成的子串。 int index (String s1, String s2 ) 如果串s2是s1的子串,则可求串s2在串s1中第一次出现的位置。 字符串ADT 顺序结构字符串 struct SeqString { /* 顺序串的类型 */ int MAXNUM; /* 串允许的最大字符个数 */ int n; /* 串的长度,n?MAXNUM */ char *c; }; typedef struct SeqString *PSeqString; 顺序串示例 s = “abcdefg” a b c d e f g s.n = 7 s.c 0 1 2 3 4 5 6 MAXNUM-1 创建顺序结构空串 PSeqString createNullStr_seq( int m ) { PSeqString pstr = (PSeqString)malloc(sizeof(structSeqString)); if (pstr != NULL) { pstr->c = (char* )malloc(sizeof (char)*m); if (pstr->c != NULL) { pstr->n = 0; pstr->MAXNUM = m; return (pstr) } else free (pstr); } printf("Out of space!!\n"); return NULL; } struct SeqString { int MAXNUM; int n;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值