删除链表的节点
原创
©著作权归作者所有:来自51CTO博客作者龙崎流河的原创作品,请联系作者获取转载授权,否则将追究法律责任
题目:
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
注意:此题对比原题有改动
例子1:
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
例子2:
输入: head = [4,5,1,9], val = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
分析:
这题没啥好说的
代码:
public class DeleteNode {
public ListNode deleteNode(ListNode head, int val) {
//没有节点的情况
if (head == null){
return null;
}
//只有一个节点的情况
if (head.val == val){
return head.next;
}
ListNode temp = head.next;
ListNode pre = head;
while (temp != null){
if (temp.val == val){
pre.next = temp.next;
return head;
}
temp = temp.next;
pre = pre.next;
}
return head;
}
}