链表习题(9)-编写一算法,将链表中数据域值最小的结点移到链表的最前面。要求不能申请新结点

 1 /*编写一算法,将链表中数据域值最小的结点移到链表的最前面。要求不能申请新结点*/
 2 /*
 3     算法思想:找到最小值结点,及其前驱,然后通过修改指针域达到要求
 4 */
 5 void MoveMinToFirst(LinkList& L)
 6 {
 7     LNode *pre = L, *p = L->next;
 8     LNode *premin = pre, *min = p;
 9     while (p)
10     {
11         if (min->data > p->data)
12         {
13             premin = pre;
14             min = p;
15         }
16         pre = p;
17         p = p->next;
18     }
19     premin->next = min->next;
20     min->next = L->next;
21     L->next = min;
22 }
原文地址:https://www.cnblogs.com/KBryant/p/11650209.html