串-数据结构(12)
来源:互联网 发布:数据建模知乎理论物理 编辑:程序博客网 时间:2024/05/20 00:36
一、解析
串(或字符串)是由零个或多个字符组成的有限序列。一般在S[0]的位置上放置的是该字符串的字符长度。其实就是字符串了,这个串的数据结构一般的在各种语言中都有实现的。参考书上第四章,其中有个很重要的kmp模式匹配很值的去看,然而我不会,因此略过。
二、存储结构
typedef unsigned char SString[MAXSTRLEN + 1];
三、操作
#define MAXSTRLEN 255typedef unsigned char SString[MAXSTRLEN + 1];//定长顺序存储Status Concat(SString &T,SString S1,SString S2){//用T返回由S1和S2联接而成的新串。若未截断,则返回True,否则falseif (S1[0] +S2[0]<=MAXSTRLEN){//不需要截断}else if (S1[0] <MAXSTRLEN){//截断}return true;}void PrintfSString(SString s){for (int i = 1; i <= s[0]; i++){printf("%c", s[i]);}}void CreateString(SString &S,char * str){int count = 0,j = 1;while (str[count] != '\0'){S[j] = str[count];count++;j++;}S[0] = count;printf("%d\n", count);}int Index(SString S,SString T ,int pos){//返回子串T在主串S中的第pos个字符之后的位置。若不存在,函数值为0.//其中,T非空 、pos[1,StrLength(S)]int i = pos;//子串中的位置int j = 1;//主串中的位置while (j <= T[0] && i <=S[0]){if (S[i] == T[j]){//匹配成功i++; j++;}else{//匹配失败 j复位i = i - j + 2;j = 1;}}if ( j>T[0]){return i - T[0];}else{return 0;}}
四、执行
SString s1;CreateString(s1,"asdfghjkl");PrintfSString(s1);SString s2;CreateString(s2, "fgh");PrintfSString(s2);int pos = Index(s1,s2,1);printf("返回的位置:%d\n",pos);输出:
9asdfghjkl3fgh返回的位置:4请按任意键继续. . .
阅读全文
0 0
- 串-数据结构(12)
- 数据结构,串
- 数据结构---串
- 数据结构--串
- 数据结构-串
- 数据结构 串
- 数据结构 串
- 【数据结构】串
- 数据结构--串
- 【数据结构】-串
- 数据结构----串
- 数据结构-串
- 数据结构:串
- [数据结构]串
- [数据结构]串
- 数据结构--串
- 数据结构---串
- 数据结构----串
- eclipse中使用spring boot 入门开发(包含:与jsp页面和数据库交互,cmd打包运行war包)
- 每个Android程序员应该知道的Kotlin
- shell下常用语句
- UGUI Canvas与UICamera的设置
- 原型相关的概念
- 串-数据结构(12)
- 奇异值分解(SVD)原理详解及推导
- easyUi分页以及条件查询
- Java.NET.UnknownHostException:Z2ze3ewkwzrm8i64hkqf9
- [torch]optim.sgd学习参数
- 配置spring拦截器需要注意的地方
- System.arraycopy的用法
- 【LeetCode题解】309. Best Time to Buy and Sell Stock with Cooldown
- 【LeetCode】435. Non-overlapping Intervals