- 用stack或者vector反转存储数值,再构建新链表
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(!pHead)return nullptr;
vector<ListNode*> s;
ListNode* ph=pHead;
while(ph){
s.push_back(ph);
ph=ph->next;
}
reverse(s.begin(),s.end());
ListNode* head=s[0];
ListNode* h=head;
for(int i=1;i<s.size();i++){
ListNode* cur=s[i];
h->next=cur;
h=cur;
}
//必要
h->next=nullptr;
return head;
}
};
2.倒置链表
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
//不写nullptr报错
ListNode* head=nullptr;
while(pHead){
ListNode* h=pHead->next;
pHead->next=head;
head=pHead;
pHead=h;
}
return head;
}
};