Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 1.22 KB

18.md

File metadata and controls

69 lines (54 loc) · 1.22 KB

删除链表的节点

题目

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。

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
}