动态的字符串排序

该博客介绍了如何根据ASCII码对字符串进行排序,按照递归定义比较字符,使用strcmp函数进行ASCII码序比较。输入为字符串数量和每个字符串,输出为排序后的字符串序列。提示可能需要动态分配内存来处理大字符串。

Description

把字符串按照ASCII码序的从小到大排列出来。

串的ASCII码序遵循如下递归定义:

1 两串的前n-1个字符相同,第n个字符ASCII码序小的排在前面;
2 只有两串的字符完全相同时,才有两串相等。

字符的ASCII码序比较可以用strcmp()函数完成。

Input

第一行输入为一个整数N(N<=50,000),后接N行,每行一个字符串,串长不超过100,000。
Output

输出为N行,按照字符串的ASCII码序排列,ASCII码序小的排前面。
Sample Input
10
abc
bc
aca
ca
c
aac
aba
bc
da
ba
Sample Output
aac
aba
abc
aca
ba
bc
bc
c
ca
da
HINT

用二维数组很难一次性分配出这么大的空间了,要用到根据输入变化的动态分配的内存才行。这里需要动态的数据结构,比如,字符指针的数组“char *s[]”,或者是二维的字符指针“char **s”,等等。

Append Code


AC代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char a[100000];//二维数组太大了,所以要一部分一部分的来;
int main()//本题的思路是先共输入多少行扩大,第12行;  然后输入字符串,放到a数组里面,计算长度,然后因为要一行行输入,所以扩大这一行的长度;
{
    int i;
    int j,k,h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值