我想排序的内存地址的指针数组:排序地址使用的qsort
#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
任何建议,将不胜感激!
哇,谢谢!我感谢帮助! – user434462