代码随想录算法训练营第三天| 203.移除链表元素 206.反转链表

203移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

思考:

本题主要考察的是对单向链表的基本操作,遍历链表,以判断.Next.Val找到对应的节点,删除节点

func removeElement(head *ListNode, val int) *ListNode{
    dummyNode := &ListNode{Next:head} //选择一个dummyNode方便进入循环以及返回值
    for tmp:= dummyNode; tmp.Next != nil; {
        if tmp.Next.Val == val{
            tmp.Next = tmp.Next.Next
        }else{
            tmp = tmp.Next
        }
    }
    return dummyNode.Next //这里dummyNode的Next才是真正的头节点
}

206 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

思考:

这个题比较绕,用pre和cur两个指针循环向下,要找准结束条件 cur != nil

func reverseList(head *ListNode) *ListNode {
    var pre *ListNode
    cur := head
    for cur != nil{
        tmp := cur.Next //始终要先记录正序的下个节点
        cur.Next = pre
        pre = cur
        cur = tmp
    }
    return pre //这里返回的是pre节点,结束循环的时候,cur已经指向了nil
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值