题目描述

输入一个链表,反转链表后,输出新链表的表头。

题目地址

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

思路

pHead始终指向要翻转的结点

last指向翻转后的首结点

每反转一个节点,把pHead的下一个节点指向last,last指向pHead成为反转后的首结点,在把pHead向前移动一个结点直至None结束

Python

# -*- coding:utf-8 -*-
class ListNode:
def __init__(self, x):
self.val = x
self.next = None # 单向链表链表 node1: 1->2->3
node1 = ListNode(1)
node2 = ListNode(2)
node3 = ListNode(3)
node4 = ListNode(4)
node5 = ListNode(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5 class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead or not pHead.next:
return pHead
last = None
while pHead:
temp = pHead.next
pHead.next = last
last = pHead
pHead = temp
return last if __name__ == '__main__':
origin = node1
print('反转前:', end = ' ')
while origin:
print(origin.val, end = ' ')
origin = origin.next
result = Solution().ReverseList(node1)
print('\n反转后:', end = ' ')
while result:
print(result.val, end = ' ')
result = result.next

最新文章

  1. Google C++单元测试框架---Gtest框架简介(译文)
  2. Practical JAVA (四)异常处理
  3. partition-list
  4. sublime3中文乱码解决包ConvertToUTF8.zip
  5. 分布式HBase-0.98.4环境搭建
  6. JSP页面元素
  7. 【LeetCode OJ】Word Break II
  8. [ActionScript] AS3利用SWFObject与JS通信
  9. iOS开发——语法OC篇&Block回顾
  10. QQ弹窗代码
  11. crf 分词(待)
  12. 屏幕录像专家V7.5(完美破解版,无水印)下载
  13. HDU 3551 Hard Problem
  14. c++ 05
  15. C based
  16. xsqlbuilder使用说明
  17. QNX驱动开发——中断处理(转载)
  18. pyqt样式表语法笔记(上) --原创
  19. 201521123081《Java程序设计》 第1周学习总结
  20. [再寄小读者之数学篇](2014-06-26 Logarithmical Sobolev inequality using BMO space)

热门文章

  1. 微信小程序实现图片裁剪上传(wepy)
  2. 在新获取git中项目时出现的问题汇总
  3. 【Git】Git使用记录: 撤回已经commit到本地的提交记录
  4. Docker for windows10 配置阿里云镜像
  5. VSCode汉化
  6. Annotaion——深入理解注解类型
  7. Matlab:导数边界值的有限元(Ritz)法
  8. HTML中引用外部JS文件失效原因
  9. 通过cookie记录,设置页面访问的跳转页
  10. 记一下JavaScript的几种排序算法