• 数据结构字符串实训报告


    ① 串赋值Assign(s,t):将一个值赋给串s。
    ② 销毁串DestroyStr(s):释放串s占用的内存空间。
    ③ 串复制StrCopy(s,t):将一个串t赋给串s。
    ④ 求串长StrLength(s):返回串s的长度。
    ⑤ 判断串相等StrEqual(s,t):两个串s和t相等时返回1;否则返回0。
    ⑥ 串连接Concat(s,t):返回串s和串t连接的结果。
    ⑦ 求子串SubStr (s,i,j):返回串s的第i个位置开始的j个字符组成的串。
    ⑧ 查找定位位置Index(s,t):返回子串t在主串s中的位置。
    ⑨ 子串插入InsStr(s,i,t):将子串t插入到串s的第i个位置。
    ⑩ 子串删除DelStr(s,i,j):删除串s中从第i个位置开始的j个字符。
    ⑪ 子串替换RepStrAll(s,s1,s2):将串s中所有出现的子串s1均替换成s2。
    ⑫ 输出串DispStr(s):显示串s的所有字符。
      1 #include<stdio.h>
      2 #define maxsize 100
      3 typedef struct{
      4     char ch[maxsize];
      5     int n;
      6 }SeqString;
      7 
      8 void Assign(SeqString &L,char ch1[]){           //  数组赋值给字符串
      9     int i=0;
     10     while(ch1[i]!=''){
     11         L.ch[i]=ch1[i];
     12         i++;
     13     }
     14     L.n=i;
     15 }
     16 
     17 void DisqStr(SeqString &L){                     //  输出串
     18     printf("L.ch的字符串为:");
     19     for(int i=0;i<L.n;i++){
     20         printf("%c",L.ch[i]);
     21     }
     22     printf("
    ");
     23 }
     24 
     25 int  concat(SeqString &L,char ch2[]){            //串连接
     26     int i=0,j,m;
     27     m=L.n;
     28     while(ch2[i]!=''){
     29         i++;
     30         m++;
     31     }
     32     for(j=0;j<i;j++){
     33         L.ch[j+L.n]=ch2[j];
     34     }
     35     printf("将串ch2连接到L.ch后面,得到的新的字符串为:
    %s
    ",L.ch);
     36     L.n=m;
     37     return i;
     38 }
     39 
     40 void Strlength(SeqString &L){                    //求串长
     41     printf("字符串L.ch的长度为:%d
    ",L.n);
     42 }
     43 
     44 void StrEqual(SeqString &L,char ch2[],int i){          //判断串相等
     45     int k=0,a;
     46     a=L.n>=i?L.n:i;
     47     printf("判断L.ch和ch2的字符串是否相等!
    结果为:");
     48     for(int j=0;j<a;j++){
     49         if(L.ch[j]==ch2[j]){
     50             k++;
     51         }else if(L.ch[j]>ch2[j]){
     52             printf("1
    ");
     53             break;
     54         }else {
     55             printf("-1
    ");
     56             break;
     57         }
     58     }
     59     if(k==a){
     60         printf("0
    ");
     61     }
     62 }
     63 
     64 void Index (SeqString &L,char ch3[]){
     65     int n=0,i,j,k;
     66     while(ch3[n]!=''){
     67         n++ ;
     68     }
     69     for(i=0;i<L.n-n;i++){
     70         for(j=0,k=i;j<n;j++,k++){
     71             if(ch3[j]!=L.ch[k]){
     72                 break;
     73             } }
     74         if(j==n){
     75             printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置
    ",i+1,i+n);
     76         }
     77     }
     78     return;
     79 }
     80 
     81 void InsStr(SeqString &L,int n,int m){           //串的查找
     82     int i;
     83     printf("L.ch字符串第%d个位置开始的%d个字符为:
    ",n,m);
     84     for(i=n-1;i<n+m-1;i++){
     85         printf("%c",L.ch[i]);
     86     }
     87     printf("
    ");
     88 }
     89 
     90 int main(){
     91     int i,m,n;
     92     char ch1[100],ch2[5]="efgh",ch3[4]="efg";
     93     SeqString L;
     94     printf("请输入一个字符串:
    ");
     95     gets(ch1);
     96     Assign(L,ch1);
     97     DisqStr(L);
     98     Strlength(L);
     99     StrEqual(L,ch2,i);
    100     i=concat(L,ch2);
    101     printf("请问要查找第几个位置开始的几个字符:
    ");
    102     scanf("%d %d",&n,&m);
    103     InsStr(L,n,m);
    104     Index(L,ch3);
    105     DisqStr(L);
    106 }
  • 相关阅读:
    CodeForces
    HDU
    HDU
    POJ
    URAL
    POJ
    UVa
    UVa
    UVa
    UVa
  • 原文地址:https://www.cnblogs.com/liuxun1031/p/10891509.html
Copyright © 2020-2023  润新知