首页 > 其他 > 详细

剑指Offer(十五):反转链表

时间:2019-03-21 17:43:19      阅读:148      评论:0      收藏:0      [点我收藏+]

本系列文章为《剑指Offer》刷题笔记。

刷题平台:牛客网

书籍下载:共享资源

二、题目

输入一个链表,反转链表后,输出链表的所有元素。

1、思路

这个很简单,我们使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。

#include <iostream>
using namespace std;

typedef struct Node{
    int data;
    Node *next;
} Node, *List;

Node * reverseList(List head){
    //定义三个指针,保存原来的连接的状态
    //当前结点指针
    Node *pnow = head;
    //当前结点的前驱指针,初始化是 NULL
    Node *pre = NULL;
    //当前结点的后继指针,初始化也是 null
    Node *pnext = NULL;
    //定义尾指针
    Node *tail = NULL;
    //开始遍历链表
    while(pnow != NULL){
        //如果当前结点不是 null,那么初始化 pnext 指针指向当前结点的下一个结点
        pnext = pnow->next;
        //如果找到了尾结点,初始化 tail 指针
        if(NULL == pnext){
            tail = pnow;
        }
        //进行链表的反转,当前结点的 next 指针指向前一个结点,实现链表方向的反转,此时发生了断链
        pnow->next = pre;
        //勿忘断链的情形,需要使用 pre 指针保存状态,pre 等价于是后移一个结点
        pre = pnow;
        //pnow 后移一个结点
        pnow = pnext;
    }
    
    return tail;
}

 python

# -*- 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 or not pHead.next:

            return pHead

        last = None

        while pHead:

            tmp = pHead.next

            pHead.next = last

            last = pHead

            pHead = tmp

        return last
 

 



剑指Offer(十五):反转链表

原文:https://www.cnblogs.com/sunforday/p/10573143.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!