【203-Remove Linked List Elements(删除单链表中的元素)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
代码下载【https://github.com/Wang-Jun-Chao】
原题
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;
}
}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。