先将链表转换为数组,排序,然后再输出
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
int cmp(const void *a,const void *b){
return *(int*)b-*(int*)a;
}
struct ListNode* sortInList(struct ListNode* head ) {
// write code here
int* num = (int*)malloc(sizeof(int)*100001);
int cnt = 0;
while(head){
num[cnt++] = head->val;
head = head->next;
}
qsort(num,cnt,sizeof(int),cmp);
struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode));
p = NULL;
for(int i = 0; i < cnt;i++){
struct ListNode* t = (struct ListNode*)malloc(sizeof(struct ListNode));
t->val = num[i];
t->next = p;
p = t;
}
return p;
}

京公网安备 11010502036488号