Leetcode---83.删除排序链表中的重复元素
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2] 输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3] 输出:[1,2,3]
提示:
- 链表中节点数目在范围
[0, 300]
内 -100 <= Node.val <= 100
- 题目数据保证链表已经按升序 排列
题解:
我们先定义一个cur指针指向head节点
要注意三个要点:①保证当前节点和当前节点的下一个节点不为空;
②当前节点的val和下一个节点的val值相等时,需要删除下一个节点,
即cur->next==cur->next->next;
③当前节点的val值和下一个节点的val值不相等时,需要遍历,继续往下进行,
即cur=cur->next;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *cur=head;
while(cur!=NULL&&cur->next!=NULL)//保证当前节点和下一个节点不为空
{
if(cur->val==cur->next->val)
{
//删除重复节点
cur->next=cur->next->next;
}
else{
//移动到下一个节点
cur=cur->next;
}
}
return head;
}