概述
其目的是逆转一个给定的链表。
实验结果
Input: 3->2->1
Output: 1->2->3
程序
下面是一个同样的程序
package main
import "fmt"
func main() {
first := initList()
first.AddFront(1)
first.AddFront(2)
first.AddFront(3)
first.AddFront(4)
first.Head.Traverse()
first.Reverse()
fmt.Println("")
first.Head.Traverse()
}
func initList() *SingleList {
return &SingleList{}
}
type ListNode struct {
Val int
Next *ListNode
}
func (l *ListNode) Traverse() {
for l != nil {
fmt.Println(l.Val)
l = l.Next
}
}
type SingleList struct {
Len int
Head *ListNode
}
func (s *SingleList) Reverse() {
curr := s.Head
var prev *ListNode
var next *ListNode
for curr != nil {
next = curr.Next
curr.Next = prev
prev = curr
curr = next
}
s.Head = prev
}
func (s *SingleList) AddFront(num int) {
ele := &ListNode{
Val: num,
}
if s.Head == nil {
s.Head = ele
} else {
ele.Next = s.Head
s.Head = ele
}
s.Len++
}
输出
4
3
2
1
1
2
3
4