24-sy-2.c 883 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include <stdlib.h>
  2. struct ListNode
  3. {
  4. int val;
  5. struct ListNode *next;
  6. };
  7. // 带头节点的单链表插入排序
  8. void insertSort(struct ListNode *head){
  9. struct ListNode *p = head->next;
  10. struct ListNode *q;
  11. if (p == NULL || p->next == NULL) return; // 空链表或单节点无需排序
  12. while(p->next) {
  13. q = head;
  14. while (q->next != p->next) {
  15. if(q->next->val < p->next->val) {
  16. q = q->next;
  17. } else {
  18. // 插入操作
  19. struct ListNode *temp = p->next;
  20. p->next = temp->next;
  21. temp->next = q->next;
  22. q->next = temp;
  23. break; // 插入完成后立即跳出
  24. }
  25. }
  26. // 只有没发生插入时才移动p指针
  27. if (q->next == p->next) {
  28. p = p->next;
  29. }
  30. }
  31. }
备用站点 当前处于降级运行的备用站点,仅供应急访问,数据和功能可能不是最新。