解题思路:将链表遍历一遍,本节点与下一个节点的val相比较,相等就删去下一个节点(也就是将本节点与下下一个节点相连),不相等的话就继续遍历下一个节点。
代码实现:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head){
//形参合理判断
if(head==NULL)
{
return NULL;
}
struct ListNode* q=head;
while(q->next!=NULL)
{
if(q->val!=q->next->val)//不相等时
{
q=q->next;
}
else//相等时
{
q->next=q->next->next;
}
}
return head;
}