/* 思路: 1,初始化 2,建表 3,输出单链表 4,删除重复节点{ 两个指针遍历整个链表 } 5,输出 */ #include<stdio.h> #include<malloc.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode * next; }LinkList; void InitList (LinkList *&L) { L=(LinkList *)malloc(sizeof (LinkList)); L->next=NULL; } void CreateList(LinkList *&L,ElemType a[],int n) { LinkList *s,*r;int i; L=(LinkList *)malloc(sizeof (LinkList)); r=L; for(i=0;i<n;i++) { s=(LinkList *)malloc(sizeof (LinkList)); s->data=a[i]; r->next=s; r=s; } r->next=NULL; } void DispList(LinkList *L) { LinkList *p=L->next; while(p){ printf("%d ",p->data); p=p->next; } printf("\n"); } void dele(LinkList *&L) { LinkList *p=L->next,*q,*r; while(p) { q=p; //------------------- while(q->next) { if(p->data==q->next->data) { r=q->next; q->next=r->next; free(r); } else q=q->next; } //-------------------- p=p->next; } } int main() { LinkList *L; ElemType a[]={10,15,18,15,10}; InitList(L); CreateList(L,a,5); DispList(L); dele(L); DispList(L); }
原文:http://www.cnblogs.com/zeng-jie/p/4954793.html