今天面试被问道反转单链表,虽然很简单,但是还是有必要记录一下:
简单的描述一下思想:
算法描述:
其实就是头插法生成单链表,从第一个节点开始依次取出每个节点,然后使用头插法生成新的链表:
Code:
//节点类习定义:
type Node struct {
e int
next *Node
}
//算法
func Reverse(h *Node) *Node {
var head *Node
p := h
for p != nil { //如果p!=nil,就在链表的头部插入
n := p.next
p.next = head
head = p
p = n //向后循环
}
return head
}