码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-03-29 13:27:57      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:题解   数据   个数   等于   nts   head   --   rom   gpo   

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题解之删除单链表中指定的元素

标签:题解   数据   个数   等于   nts   head   --   rom   gpo   

原文地址:https://www.cnblogs.com/wangxiaoyong/p/8669160.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!