203链表-移除链表元素
Posted 孤注一掷 、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了203链表-移除链表元素相关的知识,希望对你有一定的参考价值。
题目
思路
可以直接使用原来的链表来进行移除结点的操作。
需要区分删除头结点和删除非头结点
代码:
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr)
* ListNode(int x) : val(x), next(nullptr)
* ListNode(int x, ListNode *next) : val(x), next(next)
* ;
*/
class Solution
public:
ListNode* removeElements(ListNode* head, int val)
//删除头结点
while(head != NULL && head->val == val)
ListNode* temp = head;
head = head->next;
delete temp;
//删除非头结点
ListNode* cur = head;
while(cur != NULL && cur->next != NULL)
if(cur->next->val == val)
ListNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
else
cur = cur->next;
return head;
;
也可以先设置一个虚拟头结点,再进行删除操作。
此时原链表的所有结点可以按照统一的方式移除。
代码:
/**
* Definition for singly-linked list.
* struct ListNode
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr)
* ListNode(int x) : val(x), next(nullptr)
* ListNode(int x, ListNode *next) : val(x), next(next)
* ;
*/
class Solution
public:
ListNode* removeElements(ListNode* head, int val)
ListNode* dummyHead = new ListNode(0);
//将虚拟头结点指向head,方便后面操作
dummyHead->next = head;
ListNode* cur = dummyHead;
while(cur->next != NULL)
if(cur->next->val == val)
ListNode* temp = cur->next;
cur->next = cur->next->next;
delete temp;
else
cur = cur->next;
head = dummyHead->next;
delete dummyHead;
return head;
;
以上是关于203链表-移除链表元素的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript 刷题] 链表 - 移除链表元素, leetcode 203