链表中删除所有值为val的节点

xiaoxiao2021-02-28  151

刚学完数据结构与算法,小小测试了一下。。。

/** * 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 x=head; //获取第二个节点 ListNode y=head.next; //如果有下一个节点,即下一个节点不是null的时候 while(y!=null){ //y.val是指取y节点的值 if(y.val==val){ //如果下一个节点的值就是val,那么删除下一个节点 x.next=y.next; y=y.next; }else{ x=x.next; y=y.next; } } /*刚进来的时候没有判断头节点,但是为什么要到这里才判断,而不是放在第20行以前而是放在这里呢(本人也是试了好几次才发现的)那是因为放在20行之前只能判断一次头结点,之后就会放行,如果链表第二个节点的值也是val那就出错了。但是放在while之后就不会出现这个问题!*/ if(head.val==val){ head=head.next; } return head; } }

想要测试的小伙伴可以登入:http://www.lintcode.com/zh-cn/problem/进行测试!

转载请注明原文地址: https://www.6miu.com/read-18019.html

最新回复(0)