数据结构串基本操作代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三串

//串的基本操作

#include "stdio.h"

#include "stdlib.h"

#define MAXSTRLEN 255

typedef unsigned char SString[MAXSTRLEN+1];

void strlength(SString S)//求字串并放到 S[0] 中

{

int m;

for(m=1;S[m]!='\0';m++);

S[0]=m-1;

}

void insert(SString S,int n,char a)//是插入的位置 a 是插入的字符{

strlength(S);

int i;

for(i=S[0];i>=n;i--)

S[i+1]=S[i];

S[n]=a;

S[S[0]+2]='\0';

}

int compare(SString S,SString T)

{

strlength(S);

strlength(T);

int i;

for(i=1;i<=S[0]&&i<=T[0];i++)

{

if(S[i]>T[i])

return 1;

if(S[i]

return -1;

if(S[i]==T[i])

continue;

}

if(S[0]>T[0])

return 1;

else if(S[0]

return -1;

else

return 0;

}

void concat(SString T1,SString S1,SString S2)

{

strlength(S1);

strlength(S2);

int i;

if(S1[0]+S2[0]<=MAXSTRLEN)//未截断

{

for(i=1;i<=S1[0];i++)

T1[i]=S1[i];

for(i=1;i<=S2[0];i++)

T1[S1[0]+i]=S2[i];

}

T1[S1[0]+S2[0]+1]='\0';

}

void clear(SString S)

{

strlength(S);

int i;

for(i=1;i

S[i]='\0';

S[0]=0;

}

int SubString(SString &Sub,SString S,int pos,int len)

{

int i;

strlength(S);

if(pos<1||pos>S[0]||len<0||len>S[0]-pos+1)

{

printf("Error!position or length is out of range\n");

return 0;

}

for(i=1;i<=len;i++)

Sub[i]=S[pos+i-1];

Sub[i]='\0';

Sub[0]=len;

return 1;

}

int Index(SString S,SString T,int pos) {

int i=pos,j=1;

strlength(S);

strlength(T);

while(i<=S[0]&&j<=T[0])

{

if(S[i]==T[j])

{

++i;

++j;

}

else

{

i=i-j+2;

j=1;

}

}

if(j>T[0])

return i-T[0];

else return 0;

}

void main()// 测试主程序

{

/*

SString S;

printf(" 请输入字符串S: ");

scanf("%s",S+1);

printf("\n");

printf(" 输入的字符串为: ");

printf("%s",S+1);

printf("\n");

insert(S,2,'A');

printf(" 插入字符后的字符串为:"); printf("%s",S+1);

printf("\n");

*/

/*

SString T;

printf(" 请输入字符串T: ");

scanf("%s",T+1);

printf("\n");

int flag;

flag=compare(S,T);

printf("%d",flag);

*/

/*

SString S1,S2,T1;

printf(" 请输入字符串S1:");

scanf("%s",S1+1);

printf(" 请输入字符串S2:");

scanf("%s",S2+1);

concat(T1,S1,S2);

printf(" 连接的新字符串为: ");

printf("%s",T1+1);

printf("\n");

*/

/*

SString S;

printf(" 请输入字符串S: ");

scanf("%s",S+1);

printf(" 你输入的字符串为: %s\n",S+1); clear(S);

printf("%s\n",S+1);

*/

/*

SString S,Sub;

int pos,len;

printf(" 请输入字符串S: ");

scanf("%s",S+1);

printf(" 请输入子串的位置: ");

相关文档
最新文档