算法思想:比较赋值,指针锁定,影子指针
通过计数器实现(一般):
int Del_min(Link L) {
if (L == NULL || L->next == NULL) {
return ERROR;
}
Link P = L;
L = L->next;
int min=L->data;
int count = 1;
int local=1;
while (L) {
if (min > L->data) {
min = L->data;
local = count;
}
L = L->next;
count++;
}
while (local-1)
{
local--;
P = P->next;
}
Link Q;
Q = P;
P = P->next;
Q->next = P->next;
free(P);
return OK;
}
通过指针锁定(最高效):
int Del_min_s(Link L) {
if (L == NULL || L->next == NULL) {
return ERROR;
}
Link pre = L;
Link loc = L;
Link sha = L;
L = L->next;
int min = L->data;
while (L) {
if (min > L->data) {
min = L->data;
loc = L;
pre = sha;
}
sha = L;
L = L->next;
}
pre->next = loc->next;
free(loc);
return OK;
}