问题
- 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
解决
//1.利用指示指针实现
class Solution {
public ListNode deleteNode(ListNode head, int val) {
//一般删除修改这类操作都要定义一个虚拟结点进行操作
if(head==null) return head;
if(head.val==val) return head.next;
ListNode cro=head;
while(cro.next!=null&&cro.next.val!=val){ //将遍历链表直到遇到目标值
cro=cro.next;
}
if(cro.next!=null) cro.next=cro.next.next; //当遇到目标值的时候跳过目标值
return head;
}
}
//2.递归实现
class Solution {
public ListNode deleteNode(ListNode head, int val) {
if (head == null) {
return null;
}
if (head.val == val) {
return head.next;
} else {
head.next = deleteNode(head.next, val); //递归实现,当遇到目标值时,就跳过目标值
}
return head;
}
}
总结
![]()