题目大意:删除单链表中的某个节点,限制条件是只给你指向某个节点的指针(保证不会给你指向最后一个节点的指针),让你删除这个节点。
比如 1->2->3->4,给你指向3这个节点的指针,然后让这个链表变为1->2->4
思路分析:由于是单链表,所以我们没有办法获取这个节点前面的一个节点,但是我们可以把后面一个节点的值赋值给当前节点,然后将当前节点指向后面一个节点的后一个节点。
代码如下:
void deleteNode(struct ListNode* node) {
struct ListNode * p = node->next;
node->val = p->val;
node->next = p->next;
free(p);
}