/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param head ListNode类
* @param val int整型
* @return ListNode类
*/
//方法;(###注意第一个值是目标值的情况)
//先判断第一个值是否为目标值,是就直接输出,否则进行下一步
//创建一个新指针p指向头结点,以及一个用于保存找到目标节点前的节点的位置的指针temp
//while循环判断(p指向的节点的值是否是目标值且p->next不为空),不断遍历
//if判断,如果找到值相同的节点,将其断开,前后连接成新链表
#include <stdlib.h>
struct ListNode* deleteNode(struct ListNode* head, int val )
{
// write code here
//先判断第一个值是否为目标值,是就直接输出,否则进行下一步
if(head->val == val)
{
return head->next;
}
//创建一个新指针p指向头结点,以及一个用于保存找到目标节点前的节点的位置的指针temp
struct ListNode *p = head;
struct ListNode *temp = NULL;
//while循环判断(p指向的节点的值是否是目标值且p->next不为空),不断遍历
while ((p) && (p->val != val ))
{
temp = p;
p = p->next;
}
//if判断,如果找到值相同的节点,将其断开,前后连接成新链表
if(p->val == val)
{
temp->next = p->next;
}
return head;
}