golang解力扣203. 移除链表元素并举例验证解法
题目:给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
解法:
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
//203. 移除链表元素。思路:添加一个虚拟的首节点
func removeElements(head *ListNode, val int) *ListNode {
dummyHead := &ListNode{}
dummyHead.Next = head
cur := dummyHead
for cur != nil && cur.Next != nil {
if cur.Next.Val == val {
cur.Next = cur.Next.Next
} else {
cur = cur.Next
}
}
return dummyHead.Next
}
//构造链表
func linkList(datas []int) *ListNode {
var head = ListNode{Val: datas[0]}
var tail *ListNode
tail = &head
for i := 1; i < len(datas); i++ {
node := ListNode{Val: datas[i]}
tail.Next = &node
tail = &node
}
return &head
}
//遍历链表值
func ShowNode(p *ListNode) {
for p != nil {
fmt.Println(*p)
p = p.Next
}
fmt.Println()
}
func main() {