数据结构-串-字符串插入的实现

Description
实现函数void insert(s,t,pos)将字符串t插入到字符串s中,插入位置为pos。
假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数,字符串的存储结构为定长存储)


Input

输入为三项:分别为两个字符串以及要插入的位置

Output

输出为插入完成后的字符串

Sample Input
This is a pam!
rogr

12

Sample Output
This is a program!
#include<stdio.h>
#include<bits/stdc++.h>
#include<iostream>
#define Max_str 255
using namespace std;

typedef struct{//字符串存储结构
    char *ch;
    int length;
}Hstring;

void initString(Hstring &S){//初始化 
	S.ch=new char[Max_str];
    S.length=Max_str;
    for(int i=0;i<S.length;i++){
        S.ch[i]='\0';
    }
}

void Strass(Hstring &S,char *chars){//生成字符串T
    int i=0;
    char *c;
    for(i=0,c=chars;*c;i++,c++);
    for(int j=0;j<i;j++){
        S.ch[j]=chars[j];
    }
    S.length=i;
}

void Strprint(Hstring S){//输出字符串S
    for(int i=0;i<S.length;i++){
        cout<<S.ch[i];
    }
}

void insert(Hstring &S,Hstring T,int pos){//在第pos个位置插入字符串T
    int j=S.length+T.length-1;
    for(int i=S.length-1;i>=pos-1;i--){//pos后面的元素先后移T的长度个单位
        S.ch[j]=S.ch[i];
        j--;
    }
    int e=0;
    for(int k=pos-1;k<T.length+pos-1;k++){//再把T插入
        S.ch[k]=T.ch[e];
        e++;
    }
    S.length=S.length+T.length;
}
int main(){
    Hstring S,T;
    int pos;
    char chars[Max_str];
    char chars1[Max_str];
    initString(S);
    initString(T);
    gets(chars);//因为需要含义空格所以用gets
    Strass(S,chars);//把chars复制给S;
    gets(chars1);
    Strass(T,chars1);
    cin>>pos;
    insert(S,T,pos);
    Strprint(S);
    return 0;
}

 注:如果你的代码报RE,请检查你的字符串的定义和引用,

        以及生成结构体字符串的函数是否正确。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值