题解 | #牛牛的链表交换#
牛牛的链表交换
https://www.nowcoder.com/practice/0e009fba6f3d47f0b5026b5f8b0cb1bc
#include <stdio.h> #include <stdlib.h> typedef struct Node{ int data; struct Node* next; }node; node* creatlist(){ node* headNode = (node*)malloc(sizeof(node)); headNode->next = NULL; return headNode; } node* creatNode(int data){ node* newNode = (node*)malloc(sizeof(node)); newNode->data = data; newNode->next = NULL; return newNode; } void insertNode(node* headNode, int data){ node* newNode = creatNode(data); while(headNode->next){ headNode = headNode->next; } headNode->next = newNode; newNode->next = NULL; } void PrintList(node* headNode){ node* pmove = headNode->next; while(pmove){ printf("%d ",pmove->data); pmove = pmove->next; } } void swap(node* headNode){ node* temp; node* front1 = headNode->next; node* front2 = headNode->next->next; node* back1 = NULL; node* back2 = NULL; front1->next = front2->next; front2->next = front1; headNode->next = front2; for(temp = headNode;temp->next->next->next != NULL;temp = temp->next); for(back1 = headNode;back1->next->next != NULL;back1 = back1->next); for(back2 = headNode;back2->next != NULL;back2 = back2->next); back1->next = NULL; back2->next = back1; temp->next = back2; } int main() { int n,i; scanf("%d", &n); int array[] = {0}; int* p = array; p = (int*)malloc(n*sizeof(int)); node* list = creatlist(); for(i = 0;i<n;i++){ scanf("%d", p+i); insertNode(list, *(p+i)); } swap(list); PrintList(list); return 0; }