https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79
思路:遍历链表,判断当前结点值是否与下一结点值相等
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
if (head) {
// p为游标, delNode为待删除的结点
ListNode *p = head, *delNode;
// 存在下一个结点
while (p->next) {
// 下一个结点的值等于当前结点的值
if (p->next->val == p->val) {
delNode = p->next;
p->next = delNode->next;
delete delNode;
} else {
// p往前移动
p = p->next;
}
}
}
return head;
}
};