剑指18 删除链表节点
此题的一个技巧:为链表附增一个表头节点,方便将所有节点进行统一处理
/**
* 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 pHead = new ListNode(-1);
pHead.next = head;
ListNode p = pHead;
while (p.next.val != val)
p = p.next;
p.next = p.next.next;
return pHead.next;
}
}
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteNode(head *ListNode, val int) *ListNode {
preHead := new(ListNode)
preHead.Next = head
p := preHead
for p != nil && p.Next.Val != val {
p = p.Next
}
if p != nil {
p.Next = p.Next.Next
}
return preHead.Next
}