首页 > 学院 > 开发设计 > 正文

lintcode-入门-删除链表中的元素

2019-11-08 19:24:57
字体:
来源:转载
供稿:网友

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

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

思路:

(1)首先判断head是否为null,如果是null,则返回null即可。

(2)把头结点赋给p对象,把head.next赋给q。

(3)当q不为空时进行判断:如果q.val == val,就把q.next赋给p,next(让p指向q的下一个节点)。

否则,p.next赋给p,q.next赋给q

(4)最后判断一下head的值是否为要remove的值

AC代码:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    /**     * @param head a ListNode     * @param val an integer     * @return a ListNode     */    public ListNode removeElements(ListNode head, int val) {        if (head == null){            return head;        }        ListNode p = head;        ListNode q = head.next;        while (q != null) {            //如果值相等            if (q.val == val) {                p.next = q.next;                q = q.next;            }  else {                p = p.next;                q = q.next;            }        }        //最后判断一下head的值是否为要remove的值        if (head.val == val)  {            head = head.next;        }        return head;    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表