/*2018数据结构与算法上机测试题
*15.编写算法,在主串s的第i个位置前插入子串t
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXSIZE 100
typedef char elemtype;
typedef struct
{
elemtype num[MAXSIZE+1];
int length;
}SString;
void initString(SString &s)
{
memset(s.num,0,sizeof(s.num));
s.length=0;
}
void assignString(SString &s,char *w)
{
int wlen=strlen(w);
for(int i=1;i<=wlen;i++)
s.num[i]=*w++;
s.length+=wlen;
}
void insertString(SString &s,SString &t,int pos)
{
int i;
for(i=s.length;i>=pos;i--)
if(i+t.length<=MAXSIZE)
s.num[i+t.length]=s.num[i];
for(i=0;i<t.length;i++)
if(pos+i<=MAXSIZE)
s.num[pos+i]=t.num[i+1];
if(s.length+t.length<=MAXSIZE)
s.length+=t.length;
else
s.length=s.length+t.length-MAXSIZE;
}
int getLengthString(SString s)
{
return s.length;
}
void printString(SString s)
{
for(int i=1;i<=s.length;i++)
printf("%c",s.num[i]);
printf("\n");
}
int main()
{
SString s1,s2;
initString(s1);
initString(s2);
char str[MAXSIZE];
printf("Input s1:");
gets(str);
assignString(s1,str);
int s1_length=getLengthString(s1);
printf("Input s2:");
gets(str);
assignString(s2,str);
int pos;
do{
printf("Input pos:");
scanf("%d",&pos);
}while(pos<=0 || pos>s1_length);
insertString(s1,s2,pos);
printString(s1);
return 0;
}
编写算法,在主串s的第i个位置前插入子串t
猜你喜欢
转载自blog.csdn.net/JxufeCarol/article/details/85283836
今日推荐
周排行