题目链接:LeetCode 203. 移除链表元素
本题是一个经典的单链表删除元素的题目,主要注意的有两点:
- 如果删除的元素是不是头元素,则直接
p.Next= p.Next.Next
即可 - 如果删除的元素是头元素,则需要进行单独的处理
for head != nil && head.Val == val {
head = head.Next
}
if head == nil {
return nil
}
完整代码如下:
func removeElements(head *ListNode, val int) *ListNode {
// 删除头结点
for head != nil && head.Val == val {
head = head.Next
}
if head == nil {
return nil
}
//删除非头节点的情况
p:=head
for p.Next != nil && p!=nil {
if p.Next.Val == val {
p.Next= p.Next.Next
}else{
p = p.Next
}
}
return head
}
当然如果不想单独的处理删除头节点的情况,只需要声明一个虚拟的头节点即可。
完整代码如下:
func removeElements(head *ListNode, val int) *ListNode {
dummy := &ListNode{} //虚拟头节点
dummy.Next=head
p := dummy
for p.Next!=nil{
if p.Next.Val==val{
p.Next=p.Next.Next
}else{
p=p.Next
}
}
return dummy.Next
}
标签:203,ListNode,val,nil,元素,head,Next,链表,移除
From: https://www.cnblogs.com/lxing-go/p/17374859.html