博客昵称:博客小梦
最喜欢的座右铭:全神贯注的上吧!!!
作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!
博主小留言:哈喽!各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!
哈喽各位友友们,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!我仅已此文,和大家分享【快乐手撕LeetCode题解系列】——移除链表元素~ 都是精华内容,可不要错过哟!!!
题目内容
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* prev = NULL;
struct ListNode* cur = head;
while(cur)
{
//删除
if(cur->val == val)
{
if(cur == head)
{
head = cur->next;
free(cur);
cur = head;
}
else
{
prev->next = cur->next;
free(cur);
cur = prev->next;
}
}
else
{
prev = cur;
cur = cur->next;
}
}
return head;
}
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode*cur = head;
struct ListNode*tail = NULL;
head = NULL;
while(cur)
{
if(cur->val != val)
{
//头插
if(tail == NULL)
{
head = tail = cur;
}
//尾插
else
{
tail->next = cur;
tail = tail->next;
}
cur = cur->next;
}
else
{
struct ListNode*del = cur;
cur = cur->next;
free(del);
}
}
if(tail != NULL && tail->next != NULL)
tail->next = NULL;
return head;
}
struct ListNode* removeElements(struct ListNode* head, int val)
{
struct ListNode* tail = NULL;
struct ListNode* cur = head;
//带哨兵位的头结点
head = tail = (struct ListNode*)malloc(sizeof(struct ListNode));
while(cur)
{
if(cur->val == val)
{
struct ListNode*del = cur;
cur = cur->next;
free(del);
}
else
{
tail->next = cur;
tail = tail->next;
cur = cur->next;
}
}
if(tail != NULL && tail->next != NULL)
{
tail->next = NULL;
}
return head->next;
}
本篇文章旨在分享【【快乐手撕LeetCode题解系列】——移除链表元素。希望大家通过阅读此文有所收获!如果我写的有什么不好之处,请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~