Untitled
unknown
plain_text
3 years ago
2.1 kB
3
Indexable
#include <limits.h> #include <stdlib.h> #include <stdio.h> #include <string.h> int len[105]; char op[15]; char *str[105]; void Add(int x,char *s); void Delete(int x,int k); void Swap(int x,int y); void Longest(int N); void All(int N); int main(void){ int x,y,k,m,n; char s[105]; for(int i=0;i<105;i++){ len[i]=0; str[i]=(char*)malloc(sizeof(char)*(1)); str[i][0]='\0'; } scanf("%d %d",&n,&m); for(int i=0;i<m;i++){ scanf("%s",op); if(strcmp(op,"add")==0){ scanf("%d %s",&x,s); Add(x,s); } if(strcmp(op,"delete")==0){ scanf("%d %d",&x,&k); Delete(x,k); } if(strcmp(op,"swap")==0){ scanf("%d %d",&x,&y); Swap(x,y); } if(strcmp(op,"longest")==0){ Longest(n); } if(strcmp(op,"all")==0){ All(n); } } return 0; } void Add(int x,char *s){ char *tmp=(char*)malloc(sizeof(char)*(len[x]+1)); strcpy(tmp,str[x]); len[x]+=strlen(s); free(str[x]); str[x]=(char*)malloc(sizeof(char)*(len[x]+1)); strcpy(str[x],tmp); strcat(str[x],s); free(tmp); } void Delete(int x,int k){ if(k>len[x]){ len[x]=0; free(str[x]); str[x]=(char*)malloc(sizeof(char)*(1)); str[x][0]='\0'; } else{ len[x]-=k; char *tmp=(char*)malloc(sizeof(char)*(len[x]+1)); strncpy(tmp,str[x],len[x]); tmp[len[x]]='\0'; free(str[x]); str[x]=tmp; } } void Swap(int x,int y){ char *ss; ss=str[x]; str[x]=str[y]; str[y]=ss; int cc; cc=len[x]; len[x]==len[y]; len[y]=cc; } void Longest(int N){ int max=len[1],oo=1; for(int i=1;i<=N;i++){ if(len[i]>max){ max=len[i]; oo=i; } } printf("%d %s\n",max,str[oo]); } void All(int N){ for(int i=1;i<=N;i++){ printf("%s\n",str[i]); } }
Editor is loading...