#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define flag 0
typedef int DataType;
typedef struct Node
{
DataType data;
struct Node *next;
}LNode,*LinkList;
LinkList Creat_LinkList()//创建带头结点的链表(从尾部插入)
{
LinkList L;
LNode *s,*r;
s=(LNode *)malloc(sizeof(LNode));
s->next=NULL;
r=L=s;
int x;
scanf("%d",&x);
while(x!=flag)
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
if(L->next==NULL)
L->next=s;
else
r->next=s;
r=s;
scanf("%d",&x);
}
if(r)
r->next=NULL;
return L;
}
LinkList pur_LinkList(LinkList L)//删除重复结点的算法
{
LNode *p,*q,*r;
p=L->next;
while(p)
{
q=p;
while(q->next)
{
if(q->next->data==p->data)
{
r=q->next;
q->next=r->next;
free(r);
}
else
q=q->next;
}
p=p->next;
}
return L;
}
int main()
{
LinkList H;
H=Creat_LinkList();
LNode *p;
p=H->next;
while(p)
{
printf(" %d",p->data);
p=p->next;
}
printf("\n");
LinkList S;
S=pur_LinkList(H);
LNode *q;
q=S->next;
while(q)
{
printf(" %d",q->data);
q=q->next;
}
printf("\n");
system("pause");
return 0;
}