如何用Python代码实现单链表的逆序操作?
- 内容介绍
- 文章标签
- 相关推荐
本文共计673个文字,预计阅读时间需要3分钟。
这篇文章主要介绍了Python如何实现单链表的反转。以下是通过示例代码进行简要说明,适合初学者或有一定基础的学习者参考。
Python实现单链表反转示例代码:
pythonclass ListNode: def __init__(self, value=0, next=None): self.value=value self.next=next
def reverse_linked_list(head): prev=None current=head while current: next_node=current.next current.next=prev prev=current current=next_node return prev
创建单链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(3)node1.next=node2node2.next=node3
反转链表reversed_head=reverse_linked_list(node1)
打印反转后的链表current=reversed_headwhile current: print(current.value, end=' ') current=current.next
代码说明:
1. 定义了一个`ListNode`类,用于表示链表节点。
2.`reverse_linked_list`函数实现了链表反转的功能。
3.创建了一个简单的单链表,包含三个节点。
4.调用`reverse_linked_list`函数反转链表。
5.打印反转后的链表。
学习价值:
- 理解链表的基本操作。
参考价值:
- 对于初学者,可以参考此代码学习链表的基本操作。- 对于有一定基础的学习者,可以参考此代码加深对链表反转算法的理解。
需要的朋友可以参考以下代码进行学习。
这篇文章主要介绍了python如何实现单链表的反转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码如下
# coding=utf-8 class Node: def __init__(self, data=None, next=None): self.data = data self.next = next def Reserver(link): pre = link cur = link.next pre.next = None while cur: tmp = cur.next cur.next = pre pre = cur cur = tmp return pre if __name__ == "__main__": node = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9))))))))) root = Reserver(node) while root: print root.data, root = root.next
解释一下rev函数的实现过程:
line 9-11是将原链表的第一个节点变成了新链表的最后一个节点,同时将原链表的第二个节点保存在cur中
line13-16就是从原链表的第二个节点开始遍历到最后一个节点,将所有节点翻转一遍
以翻转第二个节点为例
temp = cur.next是将cur的下一个节点保存在temp中,也就是第节点3,因为翻转后,节点2的下一个节点变成了节点1,原先节点2和节点3之间的连接断开,通过节点2就找不到节点3了,因此需要保存
cur.next = pre就是将节点2的下一个节点指向了节点1
然后pre向后移动到原先cur的位置,cur也向后移动一个节点,也就是pre = cur ,cur =temp
这就为翻转节点3做好了准备
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计673个文字,预计阅读时间需要3分钟。
这篇文章主要介绍了Python如何实现单链表的反转。以下是通过示例代码进行简要说明,适合初学者或有一定基础的学习者参考。
Python实现单链表反转示例代码:
pythonclass ListNode: def __init__(self, value=0, next=None): self.value=value self.next=next
def reverse_linked_list(head): prev=None current=head while current: next_node=current.next current.next=prev prev=current current=next_node return prev
创建单链表node1=ListNode(1)node2=ListNode(2)node3=ListNode(3)node1.next=node2node2.next=node3
反转链表reversed_head=reverse_linked_list(node1)
打印反转后的链表current=reversed_headwhile current: print(current.value, end=' ') current=current.next
代码说明:
1. 定义了一个`ListNode`类,用于表示链表节点。
2.`reverse_linked_list`函数实现了链表反转的功能。
3.创建了一个简单的单链表,包含三个节点。
4.调用`reverse_linked_list`函数反转链表。
5.打印反转后的链表。
学习价值:
- 理解链表的基本操作。
参考价值:
- 对于初学者,可以参考此代码学习链表的基本操作。- 对于有一定基础的学习者,可以参考此代码加深对链表反转算法的理解。
需要的朋友可以参考以下代码进行学习。
这篇文章主要介绍了python如何实现单链表的反转,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
代码如下
# coding=utf-8 class Node: def __init__(self, data=None, next=None): self.data = data self.next = next def Reserver(link): pre = link cur = link.next pre.next = None while cur: tmp = cur.next cur.next = pre pre = cur cur = tmp return pre if __name__ == "__main__": node = Node(1, Node(2, Node(3, Node(4, Node(5, Node(6, Node(7, Node(8, Node(9))))))))) root = Reserver(node) while root: print root.data, root = root.next
解释一下rev函数的实现过程:
line 9-11是将原链表的第一个节点变成了新链表的最后一个节点,同时将原链表的第二个节点保存在cur中
line13-16就是从原链表的第二个节点开始遍历到最后一个节点,将所有节点翻转一遍
以翻转第二个节点为例
temp = cur.next是将cur的下一个节点保存在temp中,也就是第节点3,因为翻转后,节点2的下一个节点变成了节点1,原先节点2和节点3之间的连接断开,通过节点2就找不到节点3了,因此需要保存
cur.next = pre就是将节点2的下一个节点指向了节点1
然后pre向后移动到原先cur的位置,cur也向后移动一个节点,也就是pre = cur ,cur =temp
这就为翻转节点3做好了准备
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

