剑指 Offer-JZ15-反转链表

题目描述

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

思路

遍历链表,将每个链表的 next 改成前一个结点的指针。

实现

/*
struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};*/
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        if(pHead == NULL){
            return NULL;
        }
        if(pHead->next == NULL){
            return pHead;
        }
        else{
            ListNode *retPHead;
            ListNode *currNode = pHead;
            ListNode *lastNode;
            while(currNode != NULL){
                ListNode *nextNode = currNode->next;
                if(currNode == pHead){
                    currNode->next = NULL;
                }
                else{
                    currNode->next = lastNode;
                }
                lastNode = currNode;
                currNode = nextNode;
            }
            retPHead = lastNode;
            return retPHead;
        }
    }
};

结果

运行时间:4ms
占用内存:480k

你可能感兴趣的:(剑指offer)