给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
来源:力扣(LeetCode)
struct ListNode* deleteDuplicates(struct ListNode* head)
{
struct ListNode* p1,*p2;
p1=head;//令p1与传入的头结点相连
if(head==NULL)
{
return head;
}
while((p1!=NULL)&&(p1->next!=NULL))//这里注意要先判断p1是否为空然后才判断p1的next的节点,否则会出现错误。
{
p2=p1;//这里用p2来记录p1
p2=p2->next;利用p2获取p1的下一个节点,同时使p1保持不变,为了令p1结点的val与p1的next的val(也就是p2)作比较
if(p2->val==p1->val)
{
p1->next=p2->next;//删除操作
}
else
{
p1=p1->next;//若val不同,结点向后读取。
}
}
return head;//返回修改后的链表
}
没写博客多久,比较菜,若有问题,欢迎大佬指点