当前位置:   article > 正文

glib中单双向链表的归并排序_glib 排序算法

glib 排序算法
在glib库中,双向链表的排序是采用归并排序的方法

代码如下:

  1. GList *
  2. g_list_sort (GList *list,
  3. GCompareFunc compare_func)
  4. {
  5. return g_list_sort_real (list, (GFunc) compare_func, NULL);
  6. }
  7. static GList*
  8. g_list_sort_real (GList *list,
  9. GFunc compare_func,
  10. gpointer user_data)
  11. {
  12. GList *l1, *l2;
  13. if (!list)
  14. return NULL;
  15. if (!list->next)
  16. return list;
  17. l1 = list;
  18. l2 = list->next;
  19. while ((l2 = l2->next) != NULL)
  20. {
  21. if ((l2 = l2->next) == NULL)
  22. break;
  23. l1 = l1->next;
  24. }
  25. l2 = l1->next; // 指向链表中间节点
  26. l1->next = NULL;
  27. return g_list_sort_merge (g_list_sort_real (list, compare_func, user_data),
  28. g_list_sort_real (l2, compare_func, user_data),
  29. compare_func,
  30. user_data)
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/174236
推荐阅读
相关标签
  

闽ICP备14008679号