Untitled
unknown
c_cpp
2 years ago
2.0 kB
6
Indexable
#include<stdio.h> #include<string.h> #include<stdlib.h> void add(char**, int, char*); void del(char**, int, int); void swap(char**, int, int); void longest(char**, int); void all(char**, int); int main(){ int n, m; scanf("%d %d ", &n, &m); char** st = (char**)malloc(sizeof(char*) * 100 + sizeof(char) * 100 * 100005); char* ptr = (char*)(st + 100); for(int i=0; i<100; i++){ st[i] = ptr + i*1005; } for(int i=0; i<m; i++){ char op[10], s[105]; int x, y, k; scanf("%s", op); switch(op[1]){ case 'd': // add scanf("%d %s", &x, s); add(st, x-1, s); // printf("st: %d %s\n", x, s); break; case 'e': // delete scanf("%d %d", &x, &k); del(st, x-1, k); // printf("del st: %d %d\n", x, k); break; case 'w': // swap scanf("%d %d\n", &x, &y); swap(st, x-1, y-1); // printf("swap st: %d %d\n", x, y); break; case 'o': // longest longest(st, n); break; case 'l': // all all(st, n); break; } } return 0; } void add(char** st, int n, char* s){ strcat(st[n], s); } void del(char** st, int n, int k){ int len = strlen(st[n]); for(int i=len-1; i>=len-k; i--) st[n][i] = 0; } void swap(char** st, int a, int b){ char* tmp = st[a]; st[a] = st[b]; st[b] = tmp; } void longest(char** st, int n){ int max = 0, maxi = 0; for(int i=0; i<n; i++){ if(max < strlen(st[i])) max = strlen(st[i]), maxi = i; } printf("%d %s\n", strlen(st[maxi]), st[maxi]); } void all(char** st, int n){ for(int i=0; i<n; i++){ puts(st[i]); } }
Editor is loading...