题目要求:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
解题思路:
- 单链表删除节点,直接将当前节点的指针指向下一个节点的next即可;
- 因为该题是查找节点中的值是否等于给定值,并且找到之后无法向前找节点;
- 在确认是否是要删除的节点前,将头指针先保存,在移动到下一个节点判断;
- 找到删除节点的话,直接将上一个头指针,下一个节点的next。
注意:
删除头节点,返回头节点的next。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val)
{
ListNode *ptr;
ListNode *node;
ptr=head;
if(head->val==val)
{
ptr=head->next; //若删除的是头指针
return ptr;
}
while (head != NULL)
{
node=head;
head=head->next;
if(head->val==val)
{
node->next=head->next;
return ptr;
}
}
return NULL;
}
};