package main
import (
)
type ElemType interface{}
//结点
type Node struct {
Data ElemType
Pre *Node
Next *Node
}
//链表
type List struct {
First *Node
Last *Node
Size int
}
//工厂函数
func CreateList() *List {
s := new(Node)
s.Next, s.Pre = s, s
return &List{s, s, 0}
}
//反转链表
//保留第一个结点,将剩余的结点游离出来,然后依次头插到保留的结点中
func (list *List) Reverse() {
if list.Size > 1 {
s := list.First.Next
p := s.Next
s.Next = list.First //第一个结点逆置后成为最后一个结点
list.Last = s
for p != list.First {
s = p
p = p.Next
s.Next = list.First.Next
list.First.Next.Pre = s
s.Pre = list.First
list.First.Next = s
}
}
}