输入一个链表,反转链表后,输出新链表的表头。(c++11)
思路:跟之前的那题,反转打印链表有点类似想法就是,将链表中的数据全部读取到一个栈里面,因为反转就是后进先出,再把栈里的数据全部重新建一个新的链表。遇到的问题是:分不清NULL 和nullptr 卡了很久
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *res = nullptr;
ListNode *temp1 = nullptr;
stack<int> temp;
if(pHead == nullptr)
return pHead;
while(pHead != nullptr)
{
temp.push(pHead->val);
pHead = pHead->next;
}
res = new ListNode(temp.top());
temp1 = res;
temp.pop();
while(!temp.empty())
{
ListNode *temp2 = new ListNode(temp.top());
temp1->next = temp2 ;
temp1 = temp2;
temp.pop();
}
return res;
}
};
NULL和nullptr的区别参考https://blog.csdn.net/gcs6564157/article/details/75045949