删除链表中值域重复的结点
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L)
{
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL) return false;
L->next=NULL; return true;
}
LinkList list_TailInsert(LinkList &L)
{
InitList(L);
LNode *s,*r=L;
int x;
do
{
scanf("%d",&x);
if(x==9999) break;
s=(LNode*)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
}while(1);
r->next=NULL;
return L;
}
LinkList DeleteList(LinkList &L)
{
LNode *p,*s,*q;
p=L->next;
while(p)
{
s=p;
q=p->next;
while(q)
{
if(q->data==p->data)
{
s->next=q->next;
free(q);
q=s->next;
}
else
{
s=q;
q=q->next;
}
}
p=p->next;
}
return L;
}
int main()
{
LinkList L;
list_TailInsert(L);
DeleteList(L);
LNode *p;
p=L->next;
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
}