Python实现:
用Python实现链表总觉着有点尴尬
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseList(self, head):
if (head is None or head.next is None):
return head
head_tmp=None
tmp=head
while (tmp !=None):
next_tmp=tmp.next
tmp.next=head_tmp
head_tmp=tmp
tmp=next_tmp
return head_tmp
def printlist(head):
while(head !=None):
print(head.val)
head=head.next
p1=ListNode(1)
p2=ListNode(2)
p3=ListNode(3)
p4=ListNode(4)
p1.next=p2
p2.next=p3
p3.next=p4
printlist(p1)
print('**********************')
x=Solution()
pr=x.reverseList(head=p1)
printlist(pr)
Golang实现
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func reverseList(head *ListNode) *ListNode {
if head==nil || head.Next==nil{
return head
}
var head_tmp *ListNode
var tmp *ListNode
var next_tmp *ListNode
tmp=head
for tmp !=nil{
next_tmp=tmp.Next
tmp.Next=head_tmp
head_tmp=tmp
tmp=next_tmp
}
return head_tmp
}
func printlist(head *ListNode){
for {
if head == nil {
break
}
fmt.Println(head.Val)
head=head.Next
}
}
func main() {
var rl1 *ListNode =new(ListNode)
var l1 *ListNode = &ListNode{
Val:1,
Next:nil,
}
var l2 *ListNode = &ListNode{
Val:2,
Next:nil,
}
var l3 *ListNode = &ListNode{
Val:3,
Next:nil,
}
var l4 *ListNode = &ListNode{
Val:4,
Next:nil,
}
l1.Next=l2
l2.Next=l3
l3.Next=l4
printlist(l1)
fmt.Println("*******")
rl1=reverseList(l1)
printlist(rl1)
}