将链表中元素值两两交换(比如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 }

 

posted @ 2020-03-26 15:09  sqdtss  阅读(381)  评论(0编辑  收藏  举报