力扣24 两两交换链表中的节点()-其他

力扣24 两两交换链表中的节点()

``````class Solution {
public:
ListNode* new1=new ListNode(),*e1=new1;
ListNode* new2=new ListNode(),*e2=new2;
int n=0;
while(p){
if(n%2==0){
e1->next=p;
e1=p;
p=p->next;
}
else{
e2->next=p;
e2=p;
p=p->next;
}
n++;
}
e1->next=NULL;
e2->next=NULL;
p=new2->next;              //2的遍历指针
ListNode* q=new1->next;    //1的遍历指针
while(1){
if(p==NULL||q==NULL)
break;
ListNode* next2=p->next;  //2的后节点
ListNode* next1=q->next;  //1的后节点
p->next=q;
q->next=next2;
q=next1;
p=next2;
}
p=new1;
if(q!=NULL)
{
while(p->next)
p=p->next;
p->next=q;
q->next=NULL;
}
return new2->next;
}
};``````
————————

``````class Solution {
public:
ListNode* new1=new ListNode(),*e1=new1;
ListNode* new2=new ListNode(),*e2=new2;
int n=0;
while(p){
if(n%2==0){
e1->next=p;
e1=p;
p=p->next;
}
else{
e2->next=p;
e2=p;
p=p->next;
}
n++;
}
e1->next=NULL;
e2->next=NULL;
p=new2->next;              //2的遍历指针
ListNode* q=new1->next;    //1的遍历指针
while(1){
if(p==NULL||q==NULL)
break;
ListNode* next2=p->next;  //2的后节点
ListNode* next1=q->next;  //1的后节点
p->next=q;
q->next=next2;
q=next1;
p=next2;
}
p=new1;
if(q!=NULL)
{
while(p->next)
p=p->next;
p->next=q;
q->next=NULL;
}
return new2->next;
}
};``````