剑指offer-刷题笔记-简单题-JZ18 删除链表的节点
注意:删除链表节点n,必须要知道节点n对应的n-1节点指针
代码:
head->next = head->next->next;//删除head->next节点
但是本题中注意,head是移动的指针,当head指向next时,此时删除第2个节点及以后的节点应该是
currHead->next = currHead->next->next;
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param val int整型
* @return ListNode类
*/
ListNode* deleteNode(ListNode* head, int val) {
// write code here
ListNode* currHead = new ListNode(0);
ListNode* result;
currHead->next = head;
result = head;
int count = 0;
while (head)
{
if (head->val == val)
{
if(count == 0)
{
return result->next;
}else{
currHead->next = currHead->next->next;
}
}
head= head->next;
currHead = currHead->next;
count ++;
}
return result;
}
};