文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-29 06:01

关注

这篇文章主要讲解了“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):

三要素:

    if head==None or head.next==None:        return 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中如何用递归与迭代方法实现链表反转”的内容了,经过本文的学习后,相信大家对python中如何用递归与迭代方法实现链表反转这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯