编写算法,删除单链表L(L中元素值各不相同)的最大值所对应的结点,并返回该值。
//元素值各不相同
ElemType DelMax(LinkList L)
{
LinkList p, q, maxp, maxq;
p = L->next; //p=头结点的后一个结点
q = L; //q=头结点
maxp = p;
maxq = q;
int max;
while (p != NULL)
{
if (maxp->data < p->data)
{
maxp = p;
maxq = q;
}
q = p;
p = p->next;
}
maxq->next = maxp->next;
max = maxp->data;
free(maxp);
return max;
}
编写算法,删除单链表L(L中元素值有相同情况)的最大值所对应的结点,并返回该值。
//
//以下算法实现当最大元素值不唯一的情况
ElemType DelMax(LinkList L)
{
LinkList p;
LinkList p1,s;
p = L->next;
p1 = p->next;
int max=p->data;
while (p1 != NULL)
{
if (p1->data > p->data)
{
max = p1->data;
}
p = p->next;
p1 = p->next;
}
p = L;
p1 = p->next;
while (p1 != NULL)
{
if (p1->data == max)
{
s = p1;
p->next = p1->next;
free(s);
}
else
{
p = p->next;
if (p != NULL)
p1 = p->next;
else
p1 = NULL;
}
}
return max;
}