#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
const int Max=50;
typedef class bunch
{
public:
char a[Max];
int length;
}sqString;
void creat(sqString &str,char t[]); //创建串
sqString del_bunch(sqString str,int i,int j);
void Strcpy_bunch(sqString &str,sqString p);//串的复制;
sqString connect_bunch(sqString &str1,sqString str2);//将 str2的串链接到str1的后面
sqString Link_bunch(sqString str,int i,int j);//返回str中从第i个字符开始,连续j个字符组成的子串;
sqString insert_bunch(sqString str1,sqString str2,int i);//将str2 插入到str1中的第i个位置上;
sqString del_bunch(sqString str,int i,int j);//删除str从i开始长度为j的字串,并返回这个删除后的子串s
void printlist(sqString str);
int main()
{
char a[30];
gets(a);
sqString str1;
sqString str2;
/*creat(str1,a);
gets(a);
creat(str2,a);
printlist(str1);
printlist(str2);
connect_bunch(str1,str2);
printlist(str1);*/
/*creat(str1,a);
printlist(str1);
Strcpy_bunch(str2,str1);
printlist(str2);*/
int i,j;
creat(str1,a);
gets(a);
creat(str2,a);
printlist(str1);
printlist(str2);
cout<<"从第几个字符开始"<<endl;
cin>>i;
//cout<<"几个字符?"<<endl;
//cin>>j;
//str2=Link_bunch(str1,i,j);
//str2=del_bunch(str1,i,j);
sqString str=insert_bunch(str1,str2,i);
printlist(str);
return 0;
}
void creat(sqString &str,char t[]) //创建串
{
int i=0;
while(t[i]!='\0')
{
str.a[i]=t[i];
i++;
}
str.length=i;
}
void Strcpy_bunch(sqString &str,sqString p)//串的复制
{
int i=0;
while(i<p.length)
{
str.a[i]=p.a[i];
i++;
}
str.length=p.length;
}
sqString connect_bunch(sqString &str1,sqString str2)//将 str2的串链接到str1的后面
{
int i=str1.length;
int j=0;
while(j<str2.length)
{
str1.a[i]=str2.a[j];
j++;
i++;
}
str1.length=i;
return str1;
}
sqString Link_bunch(sqString str,int i,int j)//返回str中从第i个字符开始,连续j个字符组成的子串
{
sqString p;
int k=0;
if(i<0||i>str.length||i+j>str.length+1)
{
return p;
}
else
{
int temp=i+j-2;
i--;
while(i<=temp)
{
p.a[k]=str.a[i];
i++;
k++;
}
p.length=k;
}
return p;
}
sqString insert_bunch(sqString str1,sqString str2,int i)//将str2 插入到str1中的第i个位置上
{
sqString str;
if(i<0||i>str1.length+1)
{
return str;
}
int j=0;
while(j<=i-2)
{
str.a[j]=str1.a[j];
j++;
}
int k=0;
while(k<=str2.length-1)
{
str.a[j]=str2.a[k];
k++;
j++;
}
i=i-1;
while(i<=str1.length-1)
{
str.a[j]=str1.a[i];
j++;
i++;
}
str.length=j;
return str;
}
sqString del_bunch(sqString str,int i,int j)//删除str从i开始长度为j的字串,并返回这个删除后的子串s
{
sqString t;
if(i<=0||i>str.length||i+j>str.length+1)
{
return t ;
}
int k=0;
while(k<=i-2)
{
t.a[k]=str.a[k];
k++;
}
int n=i+j-1;
while(n<=str.length-1)
{
t.a[k]=str.a[n];
n++;
k++;
}
t.length=k;
return t;
}
void printlist(sqString str)
{
int i=0;
while(i<=str.length-1)
{
cout<<str.a[i];
i++;
}
cout<<endl;
}
顺序串的算法
最新推荐文章于 2023-04-06 22:00:00 发布