数据结构串基本操作代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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(" 请输入子串的位置: ");