package main
import (
"fmt"
)
// 链表节点
type Node struct {
value int
next *Node
}
// 链表
type Link struct {
head *Node
size int
}
func main() {
n1:=&Node{value: 1}
n2:=&Node{next: n1,value: 2}
n3:=&Node{next: n2,value: 3}
n4:=&Node{next: n3,value: 4}
n5:=&Node{next: n4,value: 5}
l:=&Link{size: 5,head: n5}
nL:=l.fz()
nL.bl()
}
// 链表数据遍历
func (l *Link) bl() {
cur:=l.head
for cur != nil {
fmt.Println(cur.value)
cur=cur.next
}
}
// 反转
func (l *Link) fz() *Link {
if l.size <2 {
return l
}
var pre *Node
cur:=l.head
for cur != nil {
nxt:=cur.next
cur.next = pre
pre = cur
cur=nxt
}
newLink:=&Link{
size: l.size,
head: pre,
}
return newLink
}