赞
踩
题目描述:
这题是单链表中最基本操作了,直接上代码:
- type ListNode struct {
- Val int
- Next *ListNode
- }
-
- func removeElements(head *ListNode, val int) *ListNode {
- virHead := new(ListNode) //创建一个虚拟头结点
- virHead.Next = head //使虚拟头结点连接到给的链表头结点前,这样可以统一对头节点和其他结点的操作不用把头节点单独拎出来操作
- cur := head //用来遍历的结点
- pre := virHead //遍历结点的前一个结点,方便后续操作
- for cur != nil { //直到最后一个结点
- if cur.Val == val {
- pre.Next = cur.Next //断开与待删除结点的连接
- cur = cur.Next //遍历下一个结点
-
- } else { //如果不是待删除结点,就都往下走
- pre = pre.Next
- cur = cur.Next
- }
-
- }
- return virHead.Next //返回虚拟头节点的下一个结点
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。