lintcode.452.删除链表中元素

转载 2018年04月15日 20:11:27

题目描述

删除链表中等于给定值val的所有节点。

测试样例

给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5
  • 1

解题思路

这道题虽然被归为入门题,但是坑很多。上次去深信服面试就问道了这道题。

要注意两点:

1、要删除的元素可能不止一个。

2、要删除的可能是头节点。

明白了这个,就好做了。

代码如下:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */


class Solution {
public:
    /*
     * @param head: a ListNode
     * @param val: An integer
     * @return: a ListNode
     */
    ListNode * removeElements(ListNode * head, int val) {
        // write your code here
        if (head == NULL) return NULL;
        while (head != NULL && head->val == val) head = head->next;
        ListNode *cur = head;
        while (cur !=NULL && cur->next !=NULL){
           if (cur->next->val == val){
               cur->next = cur->next->next;
           } 
           else 
              cur = cur->next;
        }
        return head;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

LintCode——删除链表中的元素

描述: 删除链表中等于给定值val的所有节点。 样例: 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4...
  • outmain
  • outmain
  • 2016-04-24 20:25:45
  • 2693

删除链表中的元素 - C++

class Solution { public: /** * @param head a ListNode * @param val an integer * @...
  • zx8225885qw
  • zx8225885qw
  • 2017-03-29 22:37:50
  • 393

LintCode之452 删除链表中的元素

题目来源:remove-linked-list-elements 题目描述:删除链表中等于给定值val的所有节点。 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3,...
  • Wan_Guo_Shi
  • Wan_Guo_Shi
  • 2016-07-06 13:45:36
  • 531

LintCode-删除链表中的元素

删除链表中的元素 删除链表中等于给定值val的所有节点。样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。/** ...
  • Sunny_Ran
  • Sunny_Ran
  • 2016-02-26 19:29:20
  • 3872

删除链表中的相同元素

Description (线性表)在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素。 Input 输入长度:6 ...
  • ak644928128
  • ak644928128
  • 2017-04-12 14:40:59
  • 671

Lintcode112.删除排序链表中的重复元素

1.问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个 2.解决思路:判断当前节点temp和temp->next数据域存放的数据元素的关系,若两个节点的存放数据相同将 temp->ne...
  • wangyukl
  • wangyukl
  • 2017-03-25 15:04:03
  • 392

[C++]Remove Linked List Elements 删除链表中的元素

leetcode 原题链接:https://leetcode.com/problems/remove-linked-list-elements/ Remove all elements fro...
  • lyy_hit
  • lyy_hit
  • 2015-08-27 21:23:11
  • 1007

Lintcode 452.删除链表中的元素

1.问题描述:删除链表中等于给定值val的所有节点 2.解题思路:创建一个头节点dummy,来保存第一个节点。然后将dummy附值给head,这样就从链表的第一的节点开始遍历,若head->next...
  • wangyukl
  • wangyukl
  • 2017-03-25 23:44:42
  • 634

用C语言实现在一个链表删除指定的一个或多个元素

#include #include typedef struct node{ int data; struct node *next; }LinkList; //创建一个链表  Link...
  • new_buff_007
  • new_buff_007
  • 2017-10-09 00:05:36
  • 704

数据结构题典002:删除单链表中最大元素所在结点(ANSI C)

分析:此题关键在于找到最大元素所在的前驱结点。 status_code remove_max_elem_llist( link_list * lst, elem_type * e ) { stat...
  • fduan
  • fduan
  • 2011-12-25 01:24:13
  • 1824
收藏助手
不良信息举报
您举报文章:lintcode.452.删除链表中元素
举报原因:
原因补充:

(最多只允许输入30个字)