链表习题(2)-一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点。

 1 /*一个集合用带头结点的单链表L表示,编写算法删除其值最大的结点。*/
 2 /*
 3     算法思想:使用pre,p,premax,max四个指针,pre和p进行比较,premax和max进行最后的删除操作
 4             通过遍历找到最大的值,后进行删除
 5 */
 6 void Delete_Max(LinkList& L)
 7 {
 8     LNode *pre = L, *p = L->next;
 9     LNode *premax = pre, *max = p;
10     while (p)
11     {
12         if (max->data < p->data)
13         {
14             premax = pre;
15             max = p;
16         }
17         pre = p;
18         p = p->next;
19     }
20     cout << "删除了最大的元素:" << max->data << endl;
21     premax->next = max->next;
22     delete(max);
23 }
原文地址:https://www.cnblogs.com/KBryant/p/11644724.html