反转单向链表
单向链表的节点只有一个指针指向下一个元素。
struct ListNode{
int val;
ListNode* next;
};
ListNode* reverseList(ListNode* head){
ListNode* newhead=nullptr;
while(head){
ListNode* next=head->next;
head->next=newhead;
newhead=head;
head=next;
}
return newhead;
}
另一种方法,先将head的位置就绪,再将new的位置就绪
ListNode* reverseList(ListNode* head){
ListNode* newhead=nullptr;
while(head){
ListNode* temp=head;
head=head->next;
temp->next=newhead;
newhead=temp;
}
return newhead;
}
反转双向链表
struct DoubleNode{
int val;
DoubleNode* prev;
DoubleNode* next;
};
DoubleNode* reverseList(DoubleNode* head){
DoubleNode* pre=nullptr;
DoubleNode* next=nullptr;
while(head){
next=head->next;
head->next=pre;
head->prev=next;
pre=head;
head=next;
}
return pre;
}