博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
删除链表中重复的节点
阅读量:5050 次
发布时间:2019-06-12

本文共 1013 字,大约阅读时间需要 3 分钟。

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

数据结构及初始化:

struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :        val(x), next(NULL) {    }};

 

代码如下:

ListNode* deleteDuplication(ListNode* pHead)    {        if(pHead==NULL)            return NULL;        ListNode *head=new ListNode(-1);//创建一个头结点,防止头结点被删除        head->next=pHead;//创建的头结点初始化        ListNode *pre=head;//两个操作指针pre和p        ListNode *p=head->next;        while(p&&p->next)        {            if(p->val==p->next->val)//如果p指向的值和p->next指向的值相同            {                int val=p->val;//保留当前的值,因为下面p会移动                while(p&&p->val==val)                    p=p->next;                pre->next=p;//此时是p指向的值和val不相同,则让pre->next=p;间接删除了重复的节点            }            else//出现p指向的值和下一个值不相同,移动pre和p            {                pre=p;                p=p->next;            }                    }        return head->next;//返回链表的头(不带头结点)    }

 

转载于:https://www.cnblogs.com/wft1990/p/7451498.html

你可能感兴趣的文章
Android 学习笔记之SharedPreference
查看>>
java的System.getProperty()方法可以获取的值
查看>>
c#中装箱拆箱性能测试
查看>>
【BZOJ4487】[JSOI2015] 染色问题(高维容斥)
查看>>
PHP include()和require()方法的区别(转)
查看>>
第三周作业
查看>>
cocos creator基础-cc.Node(一)场景树
查看>>
《JS权威指南学习总结》
查看>>
bzoj1477: 青蛙的约会(exgcd)
查看>>
ACM培训4dyy第三课——a+b
查看>>
css 布局absolute与relative的区别
查看>>
Ubuntu 环境变量
查看>>
一步一步学MySQL-日志文件
查看>>
bzoj3994: [SDOI2015]约数个数和
查看>>
hdu5306 Gorgeous Sequence
查看>>
Android中使用ListView实现下拉刷新和上拉加载功能
查看>>
proc文件系统的简介
查看>>
连续自然数和
查看>>
[SDOI2015]星际战争
查看>>
用好lua+unity,让性能飞起来——luajit集成篇/平台相关篇
查看>>