您的位置:首页 > 其它

删除单链表中的元素

2016-12-27 00:00 330 查看

原题

  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; }
}


1

2

3

4

5

1

2

3

4

5

算法实现类

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: