双向链表翻转

来源:互联网 发布:长虹网络电视机顶盒 编辑:程序博客网 时间:2024/05/21 09:02
package mainimport (    "fmt")type Node struct {    NextNode *Node    LastNode *Node    Data     interface{}}func main() {    var node0 = new(Node)    var node1 = new(Node)    var node2 = new(Node)    var node3 = new(Node)    var node4 = new(Node)    var node5 = new(Node)    node0.LastNode = nil    node0.NextNode = node1    node0.Data = 0    node1.LastNode = node0    node1.NextNode = node2    node1.Data = 1    node2.LastNode = node1    node2.NextNode = node3    node2.Data = 2    node3.LastNode = node2    node3.NextNode = node4    node3.Data = 3    node4.LastNode = node3    node4.NextNode = node5    node4.Data = 4    node5.LastNode = node4    node5.NextNode = nil    node5.Data = 5    node0.PrintNodes()    fmt.Println("...")    // node5.PrintNodes()    node0.Reverse()    fmt.Println("...")    node5.PrintNodes()}func (node *Node) Reverse() {    if node == nil {        return    }    for {        fmt.Println("4444")        tempNode := node.NextNode        node.NextNode = node.LastNode        node.LastNode = tempNode        node = node.LastNode        if node == nil {            break        }    }}func (node *Node) PrintNodes() {    for j := 0; j <= 4; j++ {        fmt.Println("j=" + fmt.Sprintf("%s", j) + " " + fmt.Sprintf("%s", node.Data))        node = node.NextNode    }}

作者:jiankunking 出处:http://blog.csdn.net/jiankunking