千家信息网

python中如何用递归与迭代方法实现链表反转

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章主要讲解了"python中如何用递归与迭代方法实现链表反转",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python中如何用递归与迭代方法实现
千家信息网最后更新 2025年01月19日python中如何用递归与迭代方法实现链表反转

这篇文章主要讲解了"python中如何用递归与迭代方法实现链表反转",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"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中如何用递归与迭代方法实现链表反转这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

递归 迭代 节点 方法 函数 学习 内容 条件 范围 原始 接下来 个头 作用 功能 只有 实例 就是 思路 情况 数组 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 有限元软件开发怎么样 如何营造良好的网络安全环境 用jdbc查询数据库 数据库系统三级模式如何理解 三星pay不能用连接不到服务器 有关于软件开发类的培训机构吗 闵行区一站式软件开发诚信为本 翼城软件开发 程序流程图 数据库 互联网怎么访问电脑数据库 陕西省软件开发好的单招学院 软件怎么接收硬件数据库 深度学习算法的使用软件开发 笔记本连服务器管理口找地址 学校网络安全实施方案免费下载 中小学生消防网络安全直播课 建立数据库详细步骤 穿越火线社区服务器列表 广州工控软件开发机构 服务器全部卡死 软件开发综合实训最新中文版 护苗开学第一课网络安全 电子商务数据库技术sql 服务器机柜电源规格 城阳区安卓软件开发哪家好 软件开发的女生怎么跟她相处 常见全文数据库 工业网络技术在哪实习 方舟神器 换服务器 香河协同办公系统网络技术
0