单链表反转程序

 1 
 2  struct  Node
 3  {
 4       int  data;
 5       struct  Node  * next;
 6  };
 7 
 8  int  InitLink(Node  * h)
 9  {
10       int  i;
11      Node  * p,  * q;
12      p  =   new  Node;
13      p  =  h;
14       for  (i  =   1 ; i  <=   10 ++ i)
15      {
16          q  =   new  Node;
17          q  -> data  =  i;
18          p  -> next  =  q;
19          p  =  q;
20      }
21      p  -> next  =  NULL;
22       return   0 ;
23  };
24 
25  int  ReverseLink(Node  * head)
26  {
27      Node  * p,  * q,  * cur;
28 
29      p  =  head  -> next;
30      cur  =  q  =  p;
31      cur  =  cur  -> next;
32      p  =  p  -> next -> next;
33      q -> next  =  NULL;
34 
35       while  (p  !=  NULL)
36      {
37          cur  -> next  =  q;
38          q  =  cur;
39          cur  =  p;
40          p  =  p -> next;
41      }
42      cur  -> next  =  q;
43      head  -> next  =  cur;
44       return   0 ;
45  }
46 
47  int  main()
48  {
49      Node  * head;
50      head  =   new  Node;
51      InitLink(head);
52      ReverseLink(head);
53       return   0 ;
54  }

你可能感兴趣的:(单链表反转程序)