aboutsummaryrefslogtreecommitdiff
path: root/delete_node_link_list.c
blob: 71eab911d3f4611bfcafeaaf03012590e1209c52 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 237. Delete Node in a Linked List
#include "leetcode.h"

/*
 * there is a singly linked list 'head' and we want to delete a node 'node' in
 * it. you are given the node to be deleted 'node'. you will not be given access
 * to the first node of 'head'. all the values of the linked list are unique and
 * it is guaranteed that the given node 'node' is not the last node in the
 * linked list. delete the given node. note that by deleting the node, we do not
 * mean removing it from memory.
 */

struct ListNode {
  int val;
  struct ListNode *next;
};

void deleteNode(struct ListNode *node) {
  struct ListNode *tmp = node, *q = NULL;
  while (tmp->next) {
    q = tmp;
    tmp->val = tmp->next->val;
    tmp = tmp->next;
  }
  q->next = NULL;
  free(tmp);
}