ポインタの配列をメモリアドレスでソートしようとしています:
#include <stdio.h>
#include <stdlib.h>
typedef struct flist {
int size;
struct flist *blink;
struct flist *flink;
} *Flist;
int compare(const void *x, const void *y)
{
Flist a = (Flist)x;
Flist b = (Flist)y;
if(a < b)
return -1;
else
return 1;
}
int main()
{
int a[] = {3, 1, 2, 4, 0};
Flist b[5];
int i;
for(i = 0; i < 5; i++)
b[a[i]] = (Flist)malloc(12);
printf("Here is the array before sorting:\n");
for(i = 0; i < 5; i++)
printf("%p\n", b[i]);
qsort(b, 5, sizeof(Flist), compare);
printf("Here is the array after sorting:\n");
for(i = 0; i < 5; i++)
printf("%p\n", b[i]);
}
ただし、プログラムはアドレスの順序には影響しません。
並べ替え前の配列:
0x759090
0x759030
0x759050
0x759010
0x759070
並べ替え後の配列:
0x759090
0x759030
0x759050
0x759010
0x759070
どんな提案でも大歓迎です!