链表操作之删除重复元素

来源:互联网 发布:impress.js demo 编辑:程序博客网 时间:2024/06/05 03:57

0.前言:

    当一个数据中存在很多重复元素,我们需要把它们重复的删除。


1.内容:

    1)使用双循环,从头开始以每个量作为基准,然后以此往后判断,如果与该基准量相同,则会删除这个节点,否则以此往前推进,那么外循环循环到结尾时自然可以成功地遍历完整个链表,判断没有重复元素,这个你是要明确的。

    2)这种方法虽然看起来比较愚笨,但是在你现有的知识基础上这是最好的方法了,这个你是需要明确的。


2.关键代码:

int del(struct node *head,int n){    struct node *p,*t,*q,*x;    t=head->next;    while(t)//t作为基准量来判断    {        p=t->next;        q=t;        while(p)        {            if(p->data==t->data)//删除链表方法,先该后面,然后前面自改,x用来存储前面的来释放内存            {                q->next=p->next;                x=p;                p=p->next;                free(x);                n--;            }            else//递进的方法            {                q=p;                p=p->next;            }        }        t=t->next;    }    return n;}


3.题目来源:

    SDUT-1130


 



   


原创粉丝点击