您的位置:首页 > 其它

leetcode [Remove Linked List Elements]//待整理多种解法

2017-04-13 22:29 495 查看
/**
* Definition for singly-linked list.
* public class ListNode {
*     int val;
*     ListNode next;
*     ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode removeElements(ListNode head, int val) {
//要删除链表的结点就需要两个个指针往下去遍历链表,prevP是为了记录当前结点的前一个结点,p是为了记录当前结点
//为了方便为原链表建一个哨位结点,这样就能表示第一个结点的前一个结点
if(head == null) return null;
ListNode head1 = new ListNode(0);
head1.next = head;
ListNode prevP = head1;
ListNode p = head;
while(p != null){//循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null)
if(p.val == val){//每一次都是判断当前结点
prevP.next = p.next;
p = p.next;
}
else{//没有删除才正常移动
prevP = prevP.next;
p = p.next;
}
}
//循环中没有用到p.next.next,所以循环控制条件不用写while(p.next != null),也不用加下面这个了
/*//因为循环控制条件是while(p.next != null),所以最后还剩下一个单独的一个结点
if(p.val == val){
prevP.next = null;
}*/
return head1.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: