struct ListNode* removeElements(struct ListNode* head, int val)
{
//首先,判断链表是否为空,若为空直接返回
if (head==NULL)
{
return head;
}
//其次,判断第一个结点是否需要删除,如果需要删除,则把head指针移动到下一个结点,不断循环,直到第一个结点不需要删除为止
while (head->val==val)
{
//这里需要判断一下该结点是否为最后一个元素,如果是最后一个元素,则删除后链表为空,直接返回即可
if (head->next==NULL)
{
head = NULL;
return head;
}
head = head->next;
}
//这里用两个指针pre,cur来实现对链表中结点的删除操作
struct ListNode* pre = NULL;
struct ListNode* cur = head;
while (cur->next!=NULL)
{
if (cur->val != val)
{
pre = cur;
cur = cur->next;
}
else
{
cur = cur->next;
pre->next = cur;
}
}
//最后判断一下最后一个结点是否需要删除
if (cur->val==val)
{
pre->next = NULL;
}
return head;
}
203. 移除链表元素
最新推荐文章于 2022-11-10 21:14:51 发布