【发布时间】:2020-09-01 14:50:21
【问题描述】:
(*current = *current->next)和(current = current->next)有什么区别?
我的代码是:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* current = head;
while(current!=NULL)
{
while (current->next!=NULL && current->val==current->next->val)
*current = *current->next;
current = current->next;
}
return head;
}
};
【问题讨论】:
-
你明白
*p = *q和p = q之间的区别吗?p和q是指针? -
current = current->next是您想要的。另一个实际上是复制数据并覆盖东西——这不是你想要的。 -
指针前的
*操作符取消对指针的引用,返回指针指向的位置的值。没有*操作符,只会复制指针contents(不是指针指向的东西)。 -
*current = *current->next;好像会导致内存泄漏。 -
非常感谢您清除概念!
标签: c++ pointers linked-list singly-linked-list function-definition