go语言学习---反转链表

package main
import "fmt"

type ListNode struct{
    Val int
    Next *ListNode
}


func ReverseList(pHead *ListNode) *ListNode{
    if(pHead == nil || pHead.Next == nil){
        return pHead
    }
    var pre *ListNode = nil
    var cur *ListNode = pHead
    var tmp *ListNode = nil

    for cur != nil{
        tmp = cur.Next
        cur.Next = pre
        pre = cur
        cur = tmp
    }
    return pre
}

func main(){
    a := new(ListNode)
    a.Val = 1

    b := new(ListNode)
    b.Val = 2

    c := new(ListNode)
    c.Val = 3

    d := new(ListNode)
    d.Val = 4

    e := new(ListNode)
    e.Val = 5

    a.Next = b
    b.Next = c
    c.Next = d
    d.Next = e

    pre_a := a
    for pre_a != nil{
        fmt.Println(pre_a.Val)
        pre_a = pre_a.Next
    }
    fmt.Println("*****")

    a_reverse := ReverseList(a)
    pre_a_reverse := a_reverse
    for pre_a_reverse != nil{
        fmt.Println(pre_a_reverse.Val)
        pre_a_reverse = pre_a_reverse.Next
    }
}

 

 

posted @ 2020-11-26 12:03  威威后花园  阅读(164)  评论(0编辑  收藏  举报