Untitled
bob
plain_text
4 years ago
2.2 kB
11
Indexable
#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;
}Editor is loading...