剑指Offer15:反转链表
1.题目
输入一个链表,反转链表后,输出新链表的表头。
2.思路
借助四个指针,循环时用三个,最后输出指针用一个。
3.代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* prehead = NULL;
ListNode* node = pHead;
ListNode* pre = NULL;
while(node!=NULL){
ListNode* prenext = node->next;
if(prenext == NULL){
prehead = node;
}
node->next = pre;
pre = node;
node = prenext;
}
return prehead;
}
};
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
prehead = None
node = pHead
pre = None
while node:
prenext = node.next
if prenext == None:
prehead = node
node.next = pre
pre = node
node = prenext
return prehead