歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言單鏈表逆置

實現單鏈表的逆置。

效果圖:

多的就不說了。代碼如下:

  1. #include <stdio.h>  
  2. #include <stdlib.h>  
  3.  
  4. typedef struct node { 
  5.     int data; 
  6.     struct node *next; 
  7. }Node; 
  8.  
  9.  
  10. //創建鏈表  
  11. Node *CreatList(void) 
  12. { 
  13.     int val, i, n; 
  14.     Node *phead, *p, *q; 
  15.  
  16.     phead = NULL; 
  17.     printf("請輸入您要建立的鏈表長度:\n"); 
  18.     scanf("%d", &n); 
  19.     printf("請輸入您要輸入的數據:\n"); 
  20.     for(i=0; i<n; ++i) 
  21.     {     
  22.         scanf("%d", &val); 
  23.         p = (Node *)malloc(sizeof(Node)); 
  24.         p->data = val; 
  25.         if(NULL == phead) 
  26.             q = phead = p; 
  27.         else 
  28.         q->next = p; 
  29.         q = p; 
  30.     } 
  31.     p->next = NULL; 
  32.     return phead; 
  33. } 
  34.  
  35.  
  36. //鏈表的逆置  
  37. Node *ReverseList(Node *phead) 
  38. { 
  39.     Node *p, *q, *r; 
  40.  
  41.     p = phead; 
  42.     q=r=NULL; 
  43.  
  44.     while(p) 
  45.     { 
  46.         q = p->next; 
  47.         p->next = r; 
  48.         r = p; 
  49.         p = q; 
  50.     } 
  51.     return r; 
  52. } 
  53.  
  54.  
  55. //輸出鏈表  
  56. void ShowList(Node *phead) 
  57. { 
  58.     Node *p; 
  59.    
  60.     p = phead; 
  61.     while(p) 
  62.     { 
  63.         printf("%d ", p->data); 
  64.         p = p->next; 
  65.     } 
  66.     printf("\n"); 
  67. } 
  68.  
  69.  
  70. int main(void) 
  71. { 
  72.     Node *phead; 
  73.  
  74.     phead = CreatList(); 
  75.     printf("鏈表逆置前的數據:\n"); 
  76.     ShowList(phead); 
  77.  
  78.     phead = ReverseList(phead); 
  79.  
  80.     printf("鏈表逆置後的數據:\n"); 
  81.     ShowList(phead); 
  82.      
  83.     return 0; 
  84. }   
Copyright © Linux教程網 All Rights Reserved