删除链表中的最小元素


  1. L为带头结点的单链表
  2. 编写算法实现 删除一个最小值结点的高效算法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "presetHead.h"

void minDelete(LinkList &L) {
Node *p = L;
Node *preMin = L;//指向最小值所存储的结点 的前一个结点
while (p->next != NULL) {
if (p->next->data < preMin->next->data) {
preMin = p;
}
p = p->next;
}
Node *q = preMin->next;
preMin->next = q->next;
free(q);
}

int main() {
int n;
cout << "enter the length of this linklist : "; cin >> n;
LinkList L; createLinkList(L, n);
cout << "current linklist: "; print(L);
minDelete(L);
cout << "after the deletion : "; print(L);
return 0;
}