zoukankan      html  css  js  c++  java
  • 数据结构顺序字符串(插入、删除、查找、BF模式匹配)

    插入元素输出之后变成了矩形框架或者变成了汉字,表示自闭了
    #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 sizeSeqString (SeqString &s,SeqString &t){ for(int i=0,j=0;i<s.length,j<t.length;i++,j++){ if(s.ch[i]>t.ch[j]) return 1; if(s.ch[i]==t.ch[j]) return 0; if(s.ch[i]<t.ch[j]) return -1; } } //两个字符串连接 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); } //插入子串s5于主串s中 void InSeqString (SeqString &s){ SeqString s2; int i,j;//i表示开始的位置,j表示个数 printf("请输入插入开始位置i:"); scanf("%d",&i); int a[s.length-i+1]; for(int n=0;n<s.length-i+1;n++){ a[n]=s.ch[n+i-1]; } for(int n=0;n<s2.length;n++){ s.ch[n+i-1]=s2.ch[n]; } for(int n=0;n<s.length-i+1;n++){ s.ch[i+j-1+n]=a[n]; } s.length=s.length+j; printf("将a插在s的第%d个位置构成的字符串为:",i); printSeqString(s); } //删除串s中第i个位置开始的j个字符串 void DelSeqString(SeqString &s){ SeqString s3; 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("错误!"); s.length=s.length-j; for(int n=i;n<=s.length;n++){ s.ch[n-1]=s.ch[n+j-1]; } printf("删除第%d个位置的%d个字符之后组成新的字符串为:",i,j); printSeqString(s); } //返回子串s4在主串s中的位置(BF匹配模式) int IndexSeqString (SeqString &s){ SeqString s4; int i,j,k; char ch4; printf("请输入字符串s(输入#结束): "); while ((ch4=getchar())!='#'){ s4.ch[i]=ch4; i++; } s4.ch[i]=''; s4.length=i; for(int i=0;i<s.length-s4.length;i++){ for(k=i,j=0;j<s4.length;k++,j++) if(s.ch[k]!=s4.ch[j]) break; if(j==s4.length) printf("shi %d sdzifuchuan",i); } return -1; } 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); sizeSeqString(s,t); concatSeqString(s,t); subSeqString(s); InSeqString(s); DelSeqString(s); IndexSeqString(s); }
  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/lvzhiqi/p/10903371.html
Copyright © 2011-2022 走看看