我的思路
无法访问前一个结点,因此不能用惯常的删除结点方法。
那么就从后往前赋值,然后删除结尾结点。
这是我一开始的思路,但不是最好的方法。
void deleteNode(ListNode* node) {
ListNode *p = node;
while(p->next){
p->val = p->next->val;
if(!p->next->next){
ListNode *temp = p->next;
p->next = NULL;
delete(temp);
return ;
}
p = p->next;
}
}
更好的方法
还是看了题后评论,大呼精巧。
这种方法运用了链表“链”的特性,而我的思路是操作数组的思路。
void deleteNode(ListNode* node) {
node->val = node->next->val;
ListNode *temp = node->next;
node->next = node->next->next;
delete(temp);
}
不删除多余结点的话会快上一点吧,但没必要。