python递归&迭代方法实现链表反转
更新时间:2022年02月21日 11:29:07 作者:惊瑟
这篇文章主要介绍了python递归&迭代方法实现链表反转,文章分享一段详细实现代码,需要的小伙伴可以参考一下,希望对你的学习或工作有所帮助
定义链表node结构:
class ListNode: def __init__(self,data): self.data = data self.next = None
将L转化为链表:
def make_list(L):
将L初始化为链表:
head = ListNode(L[0]) cur = head for i in L[1:]: cur.next = ListNode(i) cur = cur.next return head
遍历链表:
def print_list(head): cur = head while cur != None: print(cur.data,end=' ') cur = cur.next
递归法 反转链表:
def reverse_list(head):
三要素:
- 1.明确函数功能,该函数可以将链表反转,并返回一个头节点
- 2.结束条件:当链表为空或只有一个节点时返回
if head==None or head.next==None: return head
- 3.等价条件(缩小范围),对于数组来讲,缩小范围是n——>n-1,对于链表来讲则可以考虑
head
——
>head.next reverse = reverse_list(head.next) #假设reverse是head以后的、已经反转过的链表
接下来要做的是将head节点接到已经反转过的reverse上:
tmp = head.next tmp.next = head head.next = None return reverse #返回新的列表
迭代法:
def reverse_list2(head): #print_list(head) cur = head pre = None while cur: tmp = cur.next cur.next = pre pre = cur cur = tmp head = pre return head if __name__ == '__main__': L = [3,2,7,8] head = make_list(L)
正序打印:
print('原始list:') print_list(head) print('\n')
反转后打印:
revere = reverse_list(head) print('反转一次的list:') print_list(revere) print('\n')
反转2:
print('head is') print_list(head) #发现此时head节点变成了最后一个节点,说明函数是对head这个实例直接作用的 print('\n') # print('revere is') # print_list(revere) # print('\n') print('反转两次的list:') print_list(reverse_list2(revere))
到此这篇关于python递归&迭代方法实现链表反转的文章就介绍到这了,更多相关python链表反转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
关于Tensorflow中的tf.train.batch函数的使用
本篇文章主要介绍了关于Tensorflow中的tf.train.batch函数的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-04-04提高python代码可读性利器pycodestyle使用详解
鉴于 Python 在数据科学中的流行,我将深入研究 pycodestyle 的使用方法,以提高 Python 代码的质量和可读性。如果你想提升代码质量,欢迎收藏学习,有所收获,点赞支持2021-11-11Pandas中`ValueError: cannot reindex from
在Pandas中,ValueError: cannot reindex from a duplicate axis错误通常发生在尝试对包含重复索引的DataFrame或Series进行重新索引(reindex)时,所以本文介绍了Pandas中`ValueError: cannot reindex from a duplicate axis`错误分析及解决办法,需要的朋友可以参考下2024-07-07
最新评论