最简单的删除链表元素的C语言代码
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode *pre, *cur, *next;
pre = NULL;
cur = head;
while (cur != NULL) {
if (cur->val == val) {
next = cur->next;
if (pre != NULL) {
pre->next = next;
} else {
head = next;
}
free(cur);
cur = next;
} else {
pre = cur;
cur = cur->next;
}
}
return head;
}
其中,struct ListNode为链表节点的结构体类型,包括一个int类型的val表示节点的值,和一个指向下一个节点的指针next。该函数的作用是删除链表中所有值为val的节点。具体实现过程为,遍历整个链表,如果当前节点的值等于val,则将当前节点从链表中删除,并将当前节点指向下一个节点;否则,将pre指向当前节点,将当前节点指向下一个节点。需要注意的是,当被删除的节点是链表的头节点时,需要更新head指针的指向
原文地址: https://www.cveoy.top/t/topic/ey7m 著作权归作者所有。请勿转载和采集!