• 数据结构顺序字符串


    最后的子串在父串中寻找位置的代码写不对,求解

    #include<stdio.h> #include<stdlib.h> #define maxSize 100 //串字符数组最大长度 typedef struct{ char ch[maxSize]; //顺序串的存储数组 int length; //顺序串的实际长度 }SeqString; //初始化字符串 void createSeqString(SeqString &s){ s.length=0; } //给字符串赋值 void inputSeqString(SeqString &s){ int i=0; char ch1; printf("请输入字符串s(输入#结束): "); while ((ch1=getchar())!='#'){ s.ch[i]=ch1; i++; } s.ch[i]=''; s.length=i; } //输出长度 int LengthSeqString(SeqString &s){ return s.length; } //输出字符串 void printSeqString(SeqString &s) { for(int i=0;i<s.length;i++){ printf("%c",s.ch[i]); } printf(" "); } //复制字符串 void copySeqString(SeqString &s,SeqString &t){ int i,j;//i表示开始复制的位置,j表示复制个数 printf("请输入开始位置i:"); scanf("%d",&i); printf("请输入复制的个数j:"); scanf("%d",&j); int k=1,n,x=i-1; if(i<1||i>s.length||j<1||j>s.length) printf("错误!"); else{ for(n=0;n<j;n++,x++){ t.ch[n]=s.ch[x]; k++; } } t.length=k; printf("字符串的t的内容为:"); printSeqString(t); } //判断两个字符串是否相等 int equalSeqString (SeqString &s,SeqString &t){ if(s.length!=t.length) printf("字符串不相等! "); for(int i=0;s.ch[i]!=t.ch[i]&&s.ch[i]!=''&&t.ch[i]!='';i++){ if(s.ch[i]==t.ch[i]) return 0; } } //两个字符串连接 void concatSeqString(SeqString &s,SeqString &t){ SeqString s1; int i,j; for(i=0;i<s.length;i++){ s1.ch[i]=s.ch[i]; } for(i=s.length,j=0;j<t.length;j++){ s1.ch[i+j]=t.ch[j]; } s1.ch[i+j]=''; s1.length=s.length+t.length; printf("两个字符串连接之后s1的长度为:%d ",s1.length); printf("字符串的s1的内容为:"); printSeqString(s1); } //求子串返回串s的第i个位置开始的j个字符组成的串 void subSeqString(SeqString &s){ SeqString s2; int i,j;//i表示开始的位置,j表示个数 printf("请输入开始位置i:"); scanf("%d",&i); printf("请输入个数j:"); scanf("%d",&j); int k=0; if(i<1||i>s.length||j<1||j>s.length) printf("错误!"); for(k;k<j;k++){ s2.ch[k]=s.ch[i-1+k]; } s2.length=j; printf("子串s2的长度为:%d ",s2.length); printf("字符串的s2的内容为:"); printSeqString(s2); } //返回子串s3在主串s中的位置(BF匹配模式) int IndexSeqString (SeqString &s){ SeqString s3; int i=0,k; char ch2; printf("请输入字符串s3(输入#结束): "); while ((ch2=getchar())!='#'){ s3.ch[i]=ch2; i++; } s3.ch[i]=''; s3.length=i; for(int i=0;i<s.length;i++){ for(int j=0,k=i;j<s3.length;j++){ if(s.ch[i]==s3.ch[j]){ if(j==s3.length) printf("从s的第%d个位置到第%d位",i+1,i+1+j); } else break; } return 0; } } main(){ SeqString s; SeqString t; int k; createSeqString(s); inputSeqString(s); printf("s字符串的长度:%d ",s.length); printf("字符串的s的内容为:"); printSeqString(s); copySeqString(s,t); printf("t字符串的长度:%d ",t.length); equalSeqString(s,t); concatSeqString(s,t); subSeqString(s); IndexSeqString(s); }
  • 相关阅读:
    Bootstrap 网页1
    Bootstrap 网页实例
    Bootstrap 警告框
    Bootstrap 表格
    Bootstrap 小功能
    【BZOJ1706】[usaco2007 Nov]relays 奶牛接力跑 矩阵乘法
    【BZOJ3669】[Noi2014]魔法森林 LCT
    【BZOJ2049,2631,3282,1180】LCT模板四连A
    【BZOJ4071】[Apio2015]巴邻旁之桥 Treap
    【BZOJ1009】[HNOI2008]GT考试 next数组+矩阵乘法
  • 原文地址:https://www.cnblogs.com/lvzhiqi/p/10897527.html
Copyright © 2020-2023  润新知