题意:
删除一个单链中的结点
我的解法:
堪称非常愚蠢,我把每一项都复制给了前一项,然后将最后一个结点设为NULL
void deleteNode(ListNode* node) {
while(node->next!=NULL){
node->val = node->next->val;
if(node->next->next == NULL) {
node->next = NULL;
break;
}
node = node->next;
}
}
高手解法:
其实需要复制一次值,同时让本节点完全替代下一个节点,然后删掉下一个节点就好了,只需要一次
void deleteNode(ListNode* node) {
if (node==NULL) return;
ListNode *temp = node->next;
node->val = temp->val;
node->next = temp->next;
delete temp; // 注意: 他这里用了 delete 来删除结点,而我用了前一项指向NULL,其实是没有释放内存的
}