反转链表
package main
import . "nc_tools"
/*
* type ListNode struct{
* Val int
* Next *ListNode
* }
*/
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
func addInList( head1 *ListNode , head2 *ListNode ) *ListNode {
rl1, rl2 := reverse(head1), reverse(head2)
newHead := &ListNode{}
cur := newHead
plus := 0
for rl1 != nil || rl2 != nil {
node := &ListNode{Val: plus}
if rl1 != nil {
node.Val += rl1.Val
rl1 = rl1.Next
}
if rl2 != nil {
node.Val += rl2.Val
rl2 = rl2.Next
}
plus = node.Val/10
node.Val %= 10
cur.Next = node
cur = cur.Next
}
if plus > 0 {
cur.Next = &ListNode{Val: plus}
}
return reverse(newHead.Next)
}
func reverse(head *ListNode) *ListNode {
var pre *ListNode
cur := head
for cur != nil {
nxt := cur.Next
cur.Next = pre
pre = cur
cur = nxt
}
return pre
}

京公网安备 11010502036488号