删除带头结点的链表中重复元素的问题
#include <iostream>
using namespace std;
typedef struct LNode //创建结点类型
{
int data;
struct LNode *next;
}LNode, *LinkList;
void CreateLinkList(LinkList &head)
{
head=new LNode;
LinkList p1, p2;
int e;
head->data=0;
head->next=NULL;
cout<<"请输入一个递增排列的有序数列,以空格分隔,输入 0 结束"<<endl;
cin>>e;
while(e!=0)
{
if(head->next==NULL) //处理第一个结点
{
p1=new LNode;
p1->data=e;
p1->next=NULL;
head->next=p1;
}
else
{
p2=p1;
p1=new LNode;
p1->data=e;
p1->next=NULL;
p2->next=p1;
}
cin>>e;
}
}
void Purge_L(LinkList &L)
{
LNode *pa=L->next;
while(pa->next)
{
LNode *pb_pri=pa, *pb_cur=pa->next, *pc;
while(pb_cur->next)
{
if(pa->data==pb_cur->data)
{
pb_pri->next=pb_cur->next;
pc=pb_cur;
pb_cur=pb_cur->next;
delete pc;
}
else
{
pb_pri=pb_cur;
pb_cur=pb_cur->next;
}
if(pb_cur->data==pa->data&&pb_cur->next==NULL)
{
pb_pri->next=NULL;
pb_cur->next=NULL;
pc=pb_cur;
delete pc;
}
}//while
pa=pa->next;
}//while
}
void ShowLinkList(LinkList L)
{
LinkList p=L->next;
while(p->next)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<p->data;
cout<<endl;
}
int main()
{
LinkList L, L1;
CreateLinkList(L);
ShowLinkList(L);
Purge_L(L);
ShowLinkList(L);
return 0;
}
代码如上,链表中的元素不要求有序,烦请高手赐教! |