15.反转链表

1.题目

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

2.思路

修改指针指向。记忆:
每一次(对应while中四步):
(1)原链的头结点指向新结点的后置结点;
(2)头结点被新结点后置指针指向;
(3)新结点成为头结点;
(4)保持q指针在p指针的所指节点的下一个节点上

在这里插入图片描述

3.方法

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if not pHead:
            return None
        p = pHead
        q = pHead.next
        while q:
            pHead.next = q.next # 头指针指向下一个节点的后置节点
            q.next = p # 让头节点的下一个节点反向指向头节点
            p = q # p指针复位,p指向新的头节点(原头节点的下一个节点)
            q = pHead.next # q指针复位(保持在p指针的后面),指向新的头节点的后一个节点
            
        return p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值