将链表中元素值两两交换(比如1,2,3,4,5变为2,1,4,3,5)
1 #include <stdio.h> 2 #include <stdlib.h> 3 4 typedef struct node 5 { 6 int data; 7 node *next; 8 } node; 9 10 // 插入数组元素值 11 node *insert(node *L, int datas[], int len) 12 { 13 node *temp = L; 14 for (int i = 0; i < len; i++) 15 { 16 node *p = (node *)malloc(sizeof(node)); 17 p->next = NULL; 18 p->data = datas[i]; 19 temp->next = p; 20 temp = p; 21 } 22 } 23 24 // 交换 25 node *reverse(node *L) 26 { 27 if (L == NULL) 28 return NULL; 29 if (L->next == NULL) 30 return L; 31 node *next = L->next; 32 L->next = reverse(next->next); // 递归交换 33 next->next = L; 34 return next; 35 } 36 int main() 37 { 38 node *L = (node *)malloc(sizeof(node)), *r; 39 int a[] = {2, -1, 3, -4, 8, -7, 6}; 40 L->next = NULL; 41 insert(L, a, 7); 42 r = reverse(L->next); 43 for (node *q = r; q; q = q->next) 44 printf("%d ", q->data); 45 return 0; 46 }