go语言删除链表节点的方法:首先将下一个节点的值移动到当前删除节点;然后更改当前节点的next即可,如【node.next = node.next.next】。
本文操作环境:windows10系统、go 1.11.2、thinkpad t480电脑。
具体方法:
最优解:
把下一个节点的值移动到当前删除节点,然后更改当前节点的next
node.val = node.next.valnode.next = node.next.next
其他方法:
p.next = p.next.next即可达到删除的目的
/** * definition for singly-linked list. * type listnode struct { * val int * next *listnode * } */func deletenode(head *listnode, val int) *listnode { if head.val == val{ return head.next } pre:=head for head.next.val != val{ head = head.next } head.next = head.next.next return pre}
题目:
删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
现有一个链表 – head = [4,5,1,9],它可以表示为:
示例 1:
输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.
示例 2:
输入: head = [4,5,1,9], node = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.
code
依然注意,是达到删除的目的
/** * definition for singly-linked list. * type listnode struct { * val int * next *listnode * } */func deletenode(node *listnode) { for node.next.next != nil { node.val = node.next.val node = node.next } node.val = node.next.val node.next = nil}
相关推荐:golang教程
以上就是go语言如何删除链表节点的详细内容。