请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。
题目数据保证需要删除的节点 不是末尾节点 。
https://leetcode-cn.com/problems/delete-node-in-a-linked-list
解题报告:
这题不能用常规的思路去解,因为没有头指针,所以不能这样去解决。这里是参考了线性表的删除方法,把所有节点的元素值向前移动一个,并把最后一个节点置为null。
AC代码:
/*** 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* nxt = node->next;while(nxt != NULL) {node->val = nxt->val;nxt = nxt->next;if(nxt == NULL) node->next = NULL;node = node->next;}}};