(数据结构)实现对2个链表La,Lb进行合并,对相同的元素进行删除,能不能帮忙修改下。

2024-11-30 04:24:36
推荐回答(2个)
回答1:

你的整个程序都很漂亮,还要做什么修改?
/* 删除链表中相同元素 */
void Delete_LinkList(LinkList *L)
{
LinkList *p = NULL,*s, *tmp;
if(L)
p = L->next;
while( p != NULL ) /*只有相邻元素才会相等*/
{
s = p->next;
while( s != NULL )
{
if( p->data == s->data )
{
tmp = s;
p->next = s->next;
s = s->next;
free(tmp);
continue;
}
s = s->next;
}
p = p->next;
}
return;
}

回答2:

/* 删除链表中的相同元素 */
void Delete_LinkList(LinkList *L)
{
LinkList *pre, *curr, *p, *q;

for(p=L->next; p->next!=NULL; p=p->next)
{
for(pre=p,curr=p->next; curr!=NULL; )
{
if(curr->data == p->data)
{
pre->next = curr->next;
free(curr);
curr = pre->next;
}
else
{
pre=curr;
curr=curr->next;
}
}
}
}

它的特点是不论链表原来是否有序,都可以将其中的重复结点删除。