Untitled

 avatar
bob
plain_text
2 years ago
2.2 kB
4
Indexable
Never
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct _Node{
    char *text;
    int size;
}Node;


Node s[100005];

void func_1(int x,int y);
void func_2(int x,int y);
void func_3(int x,int y);

int main()
{
    int n,m,k,x,y;
    int i,j;
    int input;

    scanf("%lld",&n);
    for(i=1;i<=n;i++)
    {

        scanf("%d",&m);

        
        s[i].size=m;
        s[i].text=malloc(sizeof(char)*m);

        if(m>0)
        {
          
         for(j=0;j<m;j++)
            {
                scanf(" %c",&s[i].text[j] );
            }
        }
    }

    scanf("%d",&k);

    for(i=1;i<=k;i++)
    {
        scanf("%d%d%d",&input,&x,&y);

        switch (input)
        {
        case 1:
            func_1(x,y);
            break;
        case 2:
            func_2(x,y);
            break;
        case 3:
            func_3(x,y);
            break;
        default:
            break;
        }

    }

    for(i=1;i<=n;i++)
    {
        for(j=0;j<s[i].size;j++)
        {
            printf("%c",s[i].text[j] );
        }

        printf("\n");
    }

    
}


void func_1(int x,int y)
{
    if( s[x].size>0 && s[y].size>0){
    char *a=malloc(sizeof(char)*(s[x].size+s[y].size) );
    strncpy(a,s[x].text,s[x].size);
    strncat(a,s[y].text,s[y].size);
    free(s[x].text);
    free(s[y].text);
    s[y].text=a;
    s[y].size=s[x].size+s[y].size;
    s[x].size=0;
    }
    else if(s[x].size==0)
    {
        return;
    }
    else
    {
        func_3(x,y);
    }

}
void func_2(int x,int y)
{
    if( s[x].size>0 && s[y].size>0){
    char *a=malloc(sizeof(char)*(s[x].size+s[y].size) );
    strncpy(a,s[y].text,s[y].size);
    strncat(a,s[x].text,s[x].size);
    free(s[x].text);
    free(s[y].text);
    s[y].text=a;
    s[y].size=s[x].size+s[y].size;
    s[x].size=0;
    }
    else if(s[x].size==0)
    {
        return;
    }
    else
    {
        func_3(x,y);
    }
}
void func_3(int x,int y)
{
    char *a;
    int b;

    a=s[x].text;
    b=s[x].size;
    s[x].text=s[y].text;
    s[x].size=s[y].size;
    s[y].text=a;
    s[y].size=b;
}