python单链表逆序_逆序单链表

1、对一个单链表进行逆序操作。

逆序之前为 head-->A-->B-->C-->None

逆序之后为 head-->C-->B-->A-->None

2、实现

定义节点类

class LNode(object):

def __init__(self, elem, _next):

self.elem = elem

self.next = _next

单链表类

class LinkList(object):

def __init__(self):

self.head = None

# 头插法创建单链表

def prepend(self, elem):

self.head = LNode(elem, self.head)

# 尾插法创建单聊表

def append(self, elem):

# 先判断单链表是否为空

if self.head is None:

self.head = LNode(elem, None)

return

p = self.head

# 需要将指针移动到链表的表尾

while p.next is not None:

p = p.next

p.next = LNode(elem, None)

return

def reverse_list(self):

if self.head is None:

return

p = self.head

current = self.head.next

p.next = None

# 引入第三个指针来逆序链表

while current is not None:

temp = current.next

current.next = p

p = current

current = temp

self.head = p # 最后记得将头指针指向当前头结点的位置

def printall(self):

p = self.head

while p:

print p.elem

p = p.next

if __name__ == '__main__':

single_list = LinkList()

for i in range(6):

single_list.append(i)

single_list.printall()

"""

0

1

2

3

4

5

"""

single_list.reverse_list()

single_list.printall()

"""

5

4

3

2

1

0

"""

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值