您的位置:首页 > 其它

删除排序链表中的重复元素

2017-03-29 18:53 288 查看
问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。

样例

给出
1->1->2->null
,返回
1->2->null


给出
1->1->2->3->3->null
,返回
1->2->3->null


解题思路:遍历链表中的元素,从第一个结点开始与第二个节点的值进行比较,相等的话就用第三个节点覆盖第二个节点,不相等,找下一个节点,依次遍历下去就可以;

实现代码:class Solution {

public:

    ListNode *deleteDuplicates(ListNode *head) {

        // write your code here

     if(head==NULL){

            return NULL;

        }

     if(head->next==NULL){

            return head;

        }

        ListNode *first=NULL;

        ListNode *second=head;

        while(second!=NULL){

            if(first!=NULL&&first->val==second->val){

               first->next=second->next;

               second=first->next;

        }

      else {

             first=second;

             second=first->next;

      }

     }

    return head;
  }
};

感悟:这道题感觉和入门那个题删除链表中的指定元素差不多,只不过指定的元素在链表中且不止一个,这个思路很简单,代码实现也很简单。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: