1 /**
2 * Definition for singly-linked list.
3 * struct ListNode {
4 * int val;
5 * struct ListNode *next;
6 * };
7 */
8
9
10 struct ListNode* deleteNode(struct ListNode* head, int val){
11 struct ListNode* l, *h, *prev;
12
13 if (head == NULL)
14 return NULL;
15 if (head->val == val) {
16 l = head->next;
17 head->next = NULL;
18 return l;
19 }
20 h = head;
21 prev = head;
22 l = head->next;
23 while (l){
24 if (l->val == val) {
25 prev->next = l->next;
26 l->next = NULL;
27 break;
28 }
29 prev = l;
30 l = l->next;
31 }
32 return h;
33 }