输入描述:
第一行输入一个正整数T,表示测试用例数量。
每组测试用例第一行输入一个正整数N(N 不超过100000),表示名单长度。接着输
入N 行,每行输入一个字符串(每个字符串串长不超过20 个字符)。
输出描述:
逐行输出排序好的名单。
输入样例:
2
5
Vader
Yoda
Skywalker
Leia
Han
5
Gryffindor
Hufflepuff
Ravenclaw
Slytherin
Azkaban
输出样例:
Han
Leia
Skywalker
Vader
Yoda
Azkaban
Gryffindor
Hufflepuff
Ravenclaw
#include <stdio.h>
#include <string.h>
#include <malloc.h>
typedef char str[25];
int main(void)
{
int T, counts1 = 0, counts2 = 0;
str *p = NULL;
scanf("%d", &T);
for (int i = 0; i < T; i++)
{
int n;
scanf("%d", &n);
counts1 += n;
if (i == 0)
p = (str *)malloc(counts1 * sizeof(str));
else
p = (str *)realloc(p, counts1 * sizeof(str));
for (int j = 0; j < n; j++)
{
scanf("%s", p + j + counts2);
getchar();
}
counts2 += n;
}
for (int i = counts1 - 1, change = 1; i > 0 && change; i--)
{
change = 0;
for (int j = 0; j < i; j++)
{
if (strcmp(p[j], p[j + 1]) == -1)
{
change = 1;
str t;
strcpy(t, p[j]);
strcpy(p[j], p[j + 1]);
strcpy(p[j + 1], t);
}
}
}
printf("对输入的所有字符串按照字典序进行排序\n");
for (int i = 0; i < counts1; i++)
printf("%s\n", p[i]);
}