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
}