给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
1.此题对比原题有改动 2.题目保证链表中节点的值互不相同 3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
数据范围: 0<=链表节点值<=10000 0<=链表长度<=10000
输入:{2,5,1,9},5
返回值:{2,1,9}
说明:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 2 -> 1 -> 9
这还要啥思路
package main
type ListNode struct {
Val int
Next *ListNode
}
// 删除链表的节点
func main() {
var head *ListNode
for _, v := range [4]int{9, 1, 5, 2} {
node := ListNode{
Val: v,
Next: head,
}
head = &node
}
deleteNode(head, 5)
}
func deleteNode(head *ListNode, val int) *ListNode {
var cur *ListNode = head
var pre *ListNode = head
for {
if cur == nil {
break
}
if cur.Val == val {
if cur == head {
head = head.Next
}
pre.Next = cur.Next
break
}
pre = cur
cur = cur.Next
}
return head
}