106.png

    1. /*
    2. 简单排序在单链表中使用:
    3. 分析:
    4. 其实原理相同,只是单链表就失去了随机访问的优势,要注意防止断链
    5. */
    6. #include <stdio.h>
    7. #include <stdlib.h>
    8. struct Link {
    9. int data;
    10. struct Link *next;
    11. };
    12. void simpleSort(Link *l) {//简单排序,每次选择一个最小的排在前面
    13. Link *p, *pre, *m, *preM;
    14. while (l->next) {
    15. p = m = l->next, pre = preM = l;
    16. while (p) {
    17. if (p->data < m->data) {
    18. preM = pre;
    19. m = p;
    20. }
    21. pre = p;
    22. p = p->next;
    23. }
    24. if (m == l->next) {
    25. l = l->next;
    26. }
    27. else {
    28. preM->next = m->next;
    29. m->next = l->next;
    30. l->next = m;
    31. l = m;
    32. }
    33. }
    34. }
    35. int main() {
    36. struct Link *l;
    37. Link* createLink(int);
    38. l = createLink(0);
    39. simpleSort(l);
    40. while (l->next) {
    41. printf("%d ", l->next->data);
    42. l = l->next;
    43. }
    44. return 0;
    45. }