排序串的数组

将串集合重新按顺序排列。将串读入一个缓冲器,这个缓冲器足以容纳所有的串,设置指针来指向数组中的每个串,然后重排这些指针,将最小串的指针放在数组的首位,将次小串的指针放在数组的第二位,依次类推 。

 #include<stdio.h>

#include<stdlib.h>
#include
<string.h>
#define Nmax 1000
#define Mmax 10000
char buf[Mmax];int M=0;

int compare(void *i,void *j)
{
     
return strcmp(*(char **)i,*(char **)j);
}
    
int main()
{
  
int i,N;
  
char* a[Nmax];
  
for(N=0; N<Nmax; N++)
  {
       a[N]
=&buf[M];
       
if(scanf("%s",a[N])==EOF) break;
       M
+=strlen(a[N])+1;
     }
     qsort(a,N,
sizeof(char*),compare);
     
for(i=0; i<N; i++) printf("%s\n",a[i]);
     
return 0;
}
posted @ 2011-05-10 22:53  iwuyudong  阅读(153)  评论(0编辑  收藏  举报