python链表逆序_001单链表逆序就地逆序法

题目

给定一个带头节点的单链表:

head->1->2->3->4->5->6->7->8

使其成为:

head->8->7->6->5->4->3->2->1

就地逆序法(这是方法一,后续会有其他方法)

python语言中并没有指针和数组,因此用引用来实现

先定义一个节点对象——有数据和后续节点地址两部分组成

class LNode:

def __init__(self, x):

self.data = x

self.next = None

def Reverse(head):

''' 有头节点

:param head:

:return:

'''

# 判断链表是否为空

if head is None or head.next is None:

return

pre = None

cur = None

next = None

# 处理链表头

cur = head.next

next = cur.next

cur.next = None

pre = cur

cur = next

# 转变当前节点指向

while cur.next != None:

next = cur.next

cur.next = pre

pre = cur

cur = next

# 处理最后一个节点与倒数第二个节点

cur.next = pre

# 添加头节点

head.next = cur

if __ name __ == '__main __':

i = 1

head = LNode(None)

# head.data=None

# head.next=None

cur = head

tmp = None # 用作添加新节点

# 构造单链表

while i <= 8:

tmp = LNode(i)

# tmp.data=i

# tmp.next=None

cur.next = tmp

cur = tmp

i += 1

print("BeforeReverse:")

cur = head.next

while cur != None:

print(cur.data)

cur = cur.next

print("\nAfterReverse:")

Reverse(head)

cur = head.next

while cur != None:

print(cur.data)

cur = cur.next

输出如下:(我用的pycharm)

image.png

写在最后:

我对Markdown语法还不太熟悉,不太明白怎么把代码正确的显示出来。例如上面的if __ name __ == "__ main __" 我不能使它成为代码的一部分,这让我很头疼。请大家教教我谢谢。

本文代码在我的Github上有“https://github.com/Gesujian/python-”如发现错误请指正,谢谢^ _^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值