Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6
, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
给定一值val,在单链表中删除值为val的结点。
在链表头添加一个结点,对链表进遍历和删除操作。
链表结点类
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
算法实现类
public class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode root = new ListNode(1);
root.next = head;
// 调于记录要处理的元素的前驱结点
ListNode prev = root;
// prev.next表示要处理的结点
while (prev.next != null) {
// 要处理的结点是要删除的结点
if (prev.next.val == val) {
// 对结点进行删除操作
prev.next = prev.next.next;
}
// 当前处理的节点不需要删除,prev移动到下一个结点
else {
prev = prev.next;
}
}
// 返回新的根结点
return root.next;
}
}
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
版权声明:本文为博主原创文章,未经博主允许不得转载。
【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】
原文地址:http://blog.csdn.net/derrantcm/article/details/47997657