void removeToEnd(LinkList &L)
{
ListNode *q=L->next->next,*p=L->next->next->next,*r=q,*s;
//q指向当前最大值,p指向要判断的结点,r是p的前驱,s是最大值的前驱
while(p)//寻找最大值结点及其前驱
{
if(p->data>q->data)
{
s=r;
q=p;
}
r=p;
p=p->next;
}
if(q!=r)//q==r表示最后一个结点是最大值
{
if(q==L->next)//第一个结点是最大值
L=L->next;
else
s->next=q->next;
r->next=q;
q->next=NULL;
}
}
注:代码有点问题
此篇博客介绍如何修复一个 C++ 函数,它从链表中移除节点,同时确保删除后的链表中仍然保留了最大的元素。通过查找最大值及其前驱,函数调整节点连接,以适应链表结构的维护。
984

被折叠的 条评论
为什么被折叠?



