删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
做法:用两个指针记录下当前结点和当前结点的前一个结点即可
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteNode(ListNode head, int val) {
ListNode newHead = head;
ListNode pre = head;
while(head.val != val){
pre = head;
head = head.next;
}
//如果删除的是头结点,直接返回head.next
if(head == newHead){
return head.next;
}else{
pre.next = head.next;
return newHead;
}
}
}