leetCode题解之删除单链表中指定的元素

Posted 山里的小勇子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetCode题解之删除单链表中指定的元素相关的知识,希望对你有一定的参考价值。

1、问题描述

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5

给定一个单链表和一个数值,删除单链表中数据域等于该数值的节点。

 

2、问题分析

遍历一次链表,找到数据域等于给定数值的链表节点,然后删除之。删除链表的操作,就是被删除链表节点的前驱节点直接指向其后继节点,在C++ 中还要记得 delete被删除的链表。

为了方便处理head节点,可以人为创建一个新节点,新节点的next指向head。

特例是,输入为空时,直接返回NULL。

 

3、代码

 1 ListNode* removeElements(ListNode* head, int val) {
 2         
 3         if(head == NULL)
 4             return NULL;
 5         
 6         ListNode FirstNode(0);
 7         FirstNode.next = head;
 8         
 9         ListNode* p = &FirstNode;
10         while(p != NULL)
11         {
12             ListNode* tmp = p->next;
13             if(tmp !=  NULL && tmp->val == val )
14             {
15                 p->next = tmp->next;
16                 delete tmp; 
17             }
18             else
19                 p= p->next;
20         }
21         
22         return FirstNode.next;
23         
24         
25     }

 



以上是关于leetCode题解之删除单链表中指定的元素的主要内容,如果未能解决你的问题,请参考以下文章

一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题

leetcode No203 移除链表元素 java

删除List中指定的元素

删除数组中指定的某个元素

删除map容器中指定的元素

考研数据结构之单链代码