数据结构笔记-串

    科技2022-08-16  98

    输入和输出

    char str[10]; scanf("%d",str); //不能含有空格 cin>>str; gets(str); //允许含有空格 printf("there string is %s",str); cout<<"there string is "<<str; puts(str);

    串的实现

    #define maxlen 100 typedef struct { char vec[maxlen]; int len; }str; int LenStr(str *r) { int i = 0; while(vec[i] !='\0') i++; return i; } void ConcatStr(str *r1,str *r2) { if(r1->len + r2->len >maxlen) cout<<"overflow"; else { for(i=0;i<r2->len;i++) r1->vec[r1->len+i] = r2->vec[i]; r1->vec[r1->len+i] = '\0'; r1->len = r1->len + r2->len; } } void SubStr(str* r,str* r1,int i,int j) { if(i+j-1 > r->len) { cout<<"越界"; return ; } else { for(k=0;k<j;k++) r1->vec[k] = r->vec[i-1+k]; r1->len = j; r1->vec[r1->len] = '\0'; } cout<<"子串为:"<<r1->vec; } int EqualStr(str *r1,str *r2) { for(int i=0;r1->vec[i] == r2->vec[i] && r1->vec[i]&&r2->vec[i];i++) return r1->vec[i] - r2->vec[i]; } void main() { cout<<"input string :"<<endl; gets(c.vec); cout<<"input string :"<<endl; gets(d.vec); int k = EqualStr(&c,&d); if(k>0) cout<<"第一个串大"; else if(k<0) cout<<"第二个串大"; else cout<<"两个串一样大"; } str * InsStr(str *r,str *r1,int i) { if(i >= r->len ||r->len+r1-<len >maxlen) cout<<"不能插入"<<endl; else { for(k=r->len-1;k>=i;k--) r->vec[r1->len+k] = r->vec[k]; for(k=0;k<r1->len;k++) r->vec[i+k] = r1->vec[k]; r->len = r->len+r1->len; r->vec[r->len] = '\0'; } return r; } void DelStr(str *r,int i,int j) { if(i+j-1 > r->len ) cout<<"越界"<<endl; else { for(k = i+j;k<r->len;k++,i++) r->vec[i] = r->vec[k]; r->len = r->len -j; r->vec[r->len] = '\0'; } }

    模式匹配

    串子系统

    字符串分割处理

    cmp

    Processed: 0.033, SQL: 9