0
点赞
收藏
分享

微信扫一扫

双向链表翻转


package main

import (
"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


举报

相关推荐

0 条评论