问题:
反转一个单链表
代码示例:
package main
import "fmt"
// 时间:2021-10-29
// 功能:反转单链表 (比如一个单链表 里边是 1 3 5 7,处理后得到一个单链表里边是 7 5 3 1)
type node struct {
data int
next *node
}
func main() {
// 初始化一个链表
sli := []int{1, 3, 5, 7}
myNode := new(node)
myNode.data = sli[0]
head := myNode
for _, v := range sli[1:] {
temp := new(node)
temp.data = v
myNode.next = temp
myNode = temp
}
tempNode := head
for tempNode != nil {
fmt.Println(tempNode.data)
tempNode = tempNode.next
}
fmt.Println("----------------------------------")
newList := solve(head)
tempNode = newList
for tempNode != nil {
fmt.Println(tempNode.data)
tempNode = tempNode.next
}
}
func solve(list *node) *node {
var newHead *node
nowNode := list
for nowNode != nil {
temp := nowNode
nowNode = nowNode.next
temp.next = newHead
newHead = temp
}
return newHead
}