剑指offer——反转链表
题目描述:
输入一个链表,反转链表后,输出新链表的表头。
题目分析:
先存入数组,再反转数组;
AC代码:
/*
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;
vector<ListNode*> TEMP;
while(pHead!=NULL)
{
TEMP.push_back(pHead) ;
pHead=pHead->next;
}
reverse(TEMP.begin(),TEMP.end());//反转
for(int i=0;i!=TEMP.size()-1;i++)
TEMP[i]->next= TEMP[i+1];
TEMP[TEMP.size()-1]->next=NULL;//最后一个结点指向NULL
return TEMP[0];
}
};