Untitled
unknown
plain_text
4 years ago
2.1 kB
4
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...