您的位置:首页 > 其它

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

2017-03-28 23:39 232 查看
题目:

给定一个排序链表,删除所有重复的元素每个元素只留下一个。

样例

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

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

思路:

如果链表是空的则返回空,如果不是空的就判断前后两个节点的值是否相同。如果相同则覆盖,不相同指针下移一位进行下一次比较。

代码:

class ListNode {

  public:

      int val;

      ListNode *next;

      ListNode(int val) {

          this->val = val;

          this->next = NULL;

      }

  }

 

class Solution {

public:

    /**

     * @param head: The first node of linked list.

     * @return: head node

     */

    ListNode *deleteDuplicates(ListNode *head)

    {

        // write your code here

        if(head==NULL)

        { return NULL;

        }

        ListNode *temp=head;

        while(temp->next!=NULL)

        { if(temp->val!=temp->next->val)

          { temp=temp->next;

          }

          else 

          { temp->next=temp->next->next;

          }

          

    }

    return head;

    }

};


感想: 这个题算是比较简单的题,只需判断前后是否相同,如果判断整条链中的节点的值是否相同,只保留一个的话就没那么容易了,也正在思考中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: