题目描述
思路分析
链表模拟题
核心是是对指针的修改操作以及边界处理。不过好像链表模拟题差不多都是考察这个。
代码实现
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* head) {
auto dummy=new ListNode(-1);
dummy->next=head;
auto a=head,b=a->next;
if(!a) return NULL;
if(!b) return head;
while(b->next){
auto c=b->next;
b->next=a;
if(a==head) a->next=NULL;
a=b,b=c;
}
b->next=a;
dummy->next=b;
return dummy->next;
}
};