题解 | #牛牛的链表交换#
牛牛的链表交换
https://www.nowcoder.com/practice/0e009fba6f3d47f0b5026b5f8b0cb1bc
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int data;
Node* next;
}Node;
Node* head;
void insert(int x) {
Node* temp = new Node();
temp->data = x;
temp->next = NULL;
Node* temp1 = head;
if(head==NULL){
head=temp;
return;
}
while (temp1->next != NULL)
temp1 = temp1->next;
temp1->next = temp;
}
void print() {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
}
void swap(){
Node*p1=head;
Node*p2=p1->next;
head=p2;
p1->next=p2->next;
p2->next=p1;
Node*pn=NULL;pn=head;
Node*pn_1=NULL;pn_1=head;
Node*pn_2=NULL;pn_2=head;
while(pn->next!=NULL){
pn=pn->next;
}
while(pn_1->next->next!=NULL){
pn_1=pn_1->next;
}
while(pn_2->next->next->next){
pn_2=pn_2->next;
}
pn_2->next=pn;
pn->next=pn_1;
pn_1->next=NULL;
}
int main() {
head = NULL;
int n, x;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &x);
insert(x);
}
swap();
print();
return 0;
}