Untitled
bob
plain_text
3 years ago
2.2 kB
7
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...