简单遍历一遍链表
- 记住C语言中的链表定义
struct ListNode {
int val;
struct ListNode *next;
};
- 定义\声明链表时,
struct
关键字不能少 - 用一个链表假头
dummy
可以避免对链表第一个值的判断,使代码更加清晰 - 用一个
cur
光标来移动链表,防止移动过程中丢失链表头信息 - 记得
free
不用的内存
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode* dummy = (struct ListNode*)malloc(sizeof(struct ListNode));
dummy->next = head;
struct ListNode* cur = dummy;
while(cur->next != NULL) {
if (cur->next->val == val) {
struct ListNode* tmp = cur->next;
cur->next = cur->next->next;
free(tmp);
} else {
cur = cur->next;
}
}
head = dummy->next;
free(dummy);
return head;
}