1. /** 
  2.  * 动态分配链表节点 
  3.  * 
  4.  * @file list.c 
  5.  * @brief    
  6.  * @author struggleLinux@gmail.com 
  7.  * @version 1.0 
  8.  * @date 2011-05-23 
  9.  */ 
  10. #include <stdio.h> 
  11. #include <stdlib.h> 
  12.  
  13.  
  14. typedef struct NODE { 
  15.     int value; 
  16.     struct NODE *next; 
  17. } Node; 
  18.  
  19. /** 
  20.  * 创建链表接节点 
  21.  * @brief   create_list  
  22.  * 
  23.  * @param   value 
  24.  * 
  25.  * @return   
  26.  */ 
  27. Node * create_node( int value ); 
  28.  
  29. int main() 
  30.     static Node  *head; 
  31.     Node *lp , *node; 
  32.     int input ,i; 
  33.  
  34.     //头节点分配内存 
  35.     head = (struct NODE * ) malloc(sizeof(Node)); 
  36.     if( head == NULL ){ 
  37.         printf("根节点分配内存失败\n"); 
  38.     } 
  39.     head->value = 0; 
  40.     head->next = NULL; 
  41.     lp = head; 
  42.  
  43.     puts("输入9999退出:");   
  44.     while( scanf("%d",&input) == 1 ){ 
  45.         if( input == 9999 ) //退出输入 
  46.             break
  47.  
  48.         node = create_node( input ); 
  49.          
  50.         if( node == NULL ) 
  51.             break
  52.  
  53.         lp->next = node; 
  54.         lp = node ; 
  55.     } 
  56.  
  57.     //输出各节点的值 
  58.     i = 0; 
  59.     while( head->next != NULL ){ 
  60.         ++i; 
  61.         printf("节点%d => %d \n",i,head->next->value); 
  62.         head->next = head->next->next; 
  63.     } 
  64.     return 0; 
  65.  
  66. /** 
  67.  * 创建节点 
  68.  * @brief   create_node  
  69.  * 
  70.  * @param   value 
  71.  * 
  72.  * @return   
  73.  */ 
  74. Node * create_node( int value ){ 
  75.     Node *new_node; 
  76.      
  77.     //为节点分配内存 
  78.     new_node = (Node * ) malloc(sizeof( Node )); 
  79.     if( new_node ==NULL ) 
  80.         return NULL; 
  81.      
  82.     new_node->value = value; 
  83.     new_node->next = NULL; 
  84.  
  85.     return new_node;