#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; }