type NodeX struct {
value int
next *NodeX
}
func createNodeList() *NodeX {
var head *NodeX
for i := 0; i < 5; i++ {
tmp := &NodeX{
value: i,
next: nil,
}
tmp.next = head //头插
head = tmp
}
return head
}
func reverseNodeList(head *NodeX) *NodeX {
var pre *NodeX
for head != nil {
tmp := head.next
head.next = pre
pre = head
head = tmp
}
return pre
}
func dumpNodeList(head *NodeX) {
for head != nil {
fmt.Println(head.value)
head = head.next
}
}
func main() {
var head *NodeX = createNodeList()
dumpNodeList(head)
fmt.Println("reverseNodeList")
head = reverseNodeList(head)
dumpNodeList(head)
}
注意 reverseNodeList 返回的是 pre,当前的pre 才是新链表的头结点