LintCode之删除链表中的元素

题目描述

我的代码

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; }
 7  * }
 8  */
 9 
10 
11 public class Solution {
12     /*
13      * @param head: a ListNode
14      * @param val: An integer
15      * @return: a ListNode
16      */
17     public ListNode removeElements(ListNode head, int val) {
18         // write your code here
19        if(head == null) {
20            return null;
21        }
22        //新建一个头节点
23        ListNode h = new ListNode(0);
24        ListNode p = h;
25        while(head != null) {
26            if(head.val != val) {
27                p.next = head;
28                p = p.next;
29            }
30            if(head.next != null) {
31                head = head.next;
32            }else {
33                break;
34            }
35        }
36 
37        /*
38        * 这里要特别注意,当最后一个节点是要删除的节点时,
39        * 没有这个判断测试数据不能通过
40        */
41        if(p.next != null) {
42            p.next = null;
43        }
44 
45        if(h.next == null) {
46            return null;
47        }else {
48            h = h.next;
49            return h;
50        }
51     }
52 }    

结论:删除链表中的元素这一道题是LintCode中的一道入门题,以前写算法题的时候用的都是C语言写的,C语言中有指针这个概念,利用指针理解链表的结构就比较容易,但是这次我用的是Java,刚开始写的时候一脸蒙,转不过弯来。我的思路是新建一个头节点h,再把这个节点赋值给p,然后循环遍历链表,当一个节点的值不等于要删除的值时,让p的next指向这个节点,再让p=p.next,最后特别注意的就是当链表的最后一个节点的值等于要删除的节点时。

转载于:https://www.cnblogs.com/zwxblog/p/7719641.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值