首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

链表排序求解,该怎么处理

2012-02-06 
链表排序求解如何用简便的方法进行链表排序??请举例,谢谢![解决办法]將鍊表轉為指針數組,用qsort排序,然後

链表排序求解
如何用简便的方法进行链表排序??请举例,谢谢!

[解决办法]
將鍊表轉為指針數組,
用qsort排序,
然後還原


就好像這樣
struct list_head {
struct list_head *next, *prev;
void *data ;
};


void list_qsort(struct list_head *head, compar comp)
{
void **list ,**p;
struct list_head *pos;

int count = list_count(head) ;
if ( (p=list = (void **) malloc(sizeof(void*) * count))==NULL)
{
return ;
}

list_for_each(head, pos){
*p++ = pos-> data ;
}

qsort(list, count, sizeof(void *), comp);

p=list ;

list_for_each(head, pos){
pos-> data = *p++ ;
}

free(list);
}

热点排行