#include <iostream>
#include <stdlib.h>
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
}Node;
Node *Create_List();
void Display_List(Node *head);
void Delete_repeat_node(Node *head);
int main()
{
Node *head;
head=Create_List();
cout<<"the number you input:"<<endl;
Display_List(head);
Delete_repeat_node(head);
Display_List(head);
return 0;
}
Node *Create_List()
{
Node *head,*tail,*pnew;
int number;
head=(Node *)malloc(sizeof(Node));
if(head==NULL)
{
cout<<"no enough memory!"<<endl;
system("pause");
return NULL;
}
head->next=NULL;
tail=head;
cout<<"input the number(end of the negative):"<<endl;
while(1)
{
cin>>number;
if(number<0)
break;
pnew=(Node *)malloc(sizeof(Node));
if(pnew==NULL)
{
cout<<"no enough memory!"<<endl;
system("pause");
return NULL;
}
pnew->data=number;
pnew->next=NULL;
tail->next=pnew;
tail=pnew;
}
return head;
}
void Display_List(Node *head)
{
Node *p;
for(p=head->next;p!=NULL;p=p->next)
cout<<p->data<<' ';
cout<<endl;
}
void Delete_repeat_node(Node *head)
{
Node *s,*r,*t;
s=head->next;
cout<<"Delete the repeat number:"<<endl;
while(s->next)
{
t=s;
r=s->next;
while(t->next)
{
if(s->data==r->data)
{
t->next=r->next;
free(r);
r=t->next;
}
else
{
t=t->next;
r=t->next;
}
}
s=s->next;
if(!s)
return;
}
}