题目:https://leetcode.com/problems/delete-node-in-a-linked-list/
思路:
因为只给要删去节点的指针,所以就要想点歪办法。
假设我们有节点1,2,3,【4】,5,6,要删去4这个点,那其实只要把后序节点5的值复制给4,然后我们可以把后面原来那个5删掉,把原有的4节点链到6就行了~大致意思就是,通过往前复制一个值,构造出一个新的“4”的前序节点。
使用前:1,2,3,[4],5,6 拷贝值:1,2,3,5,[5],6 删去多于节点(将新的5节点链接到拷贝的5右边的6,删去老的5节点):1,2,3,5,6
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void deleteNode(ListNode* node) { ListNode* nextNode = node->next; node->val = nextNode->val; //Copy value ListNode* thirdNode = nextNode->next; node->next = thirdNode; delete nextNode; } };