题目链接:ttps://leetcode-cn.com/problems/delete-node-in-a-linked-list/
题目含义:给定一个节点,删除这个节点。当时一看,这个来一个pre指针,不就解决了吗?Too young,too simple!都没有头指针,那来的遍历,pre还有啥用!
策略:(不是我自己想出来的,我当时就也没想到,见识太少)比如我们要删除一个节点node,我们不是真的把node节点删掉,而是用node节点保存下一个节点的值,然后删除掉下一个节点。厉害了,我想不到,看了题解豁然开朗,感觉有点转移目标的意思。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
void deleteNode(struct ListNode* node) {
struct ListNode* p;
node->val = node->next->val;
p = node->next ;
node->next = node ->next->next;
free(p);
}