c语言 之链表 逆置

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define N 5
 4 #define NEW (NODE *)malloc(sizeof(NODE))
 5 typedef struct Node
 6 {
 7         char data;
 8         struct Node *next;
 9 }NODE;
10 NODE *Createlist();
11 void Convert(struct Node *head);
12 void Printlist(NODE *head);
13 int main()
14 {
15     NODE *head;
16     head = Createlist();
17     Convert(head);
18     Printlist(head);
19     return 0;
20 }
21 
22 NODE *Createlist()
23 {
24     int i;
25     NODE *head,*p,*q;
26     head = NEW;
27     p = head;
28     for(i = 0;i < N;i++)
29     {
30        q = NEW;
31         p->next = q;
32         scanf("%c",&q->data);
33         p = q;
34     }
35     q->next = NULL;
36     return head;
37 }
38 void Printlist(NODE *head)
39 {
40     NODE *p = head->next;
41     while(p != NULL)
42     {
43         printf("%c",p->data);
44         p = p->next;
45     }
46 }
47 void Convert(NODE *head)
48 {
49    NODE *p,*q,*temp;
50    p = head;
51    q = p->next;
52    while(q->next != NULL)
53    {
54        temp = q->next;
55        q->next = p;
56        p = q;
57        q = temp;
58    }
59    q->next = p;
60    head->next->next = NULL;
61    head->next = q;
62 }     

 

posted on 2016-12-29 22:34  迪迪菜源  阅读(701)  评论(0)    收藏  举报

导航