1. /* 
  2. 尾插法创建非循环单链表程序思维: 
  3.               1.尾插法创建非循环单链表函数逻辑: 
  4.                     1).声明一个计数器i  ,  一个由用户输入链表长度len ,一个由用户输入数据域的值 val 
  5.                     2).生成一个新的结点pHead 
  6.                     3).生成一个pTail尾结点,用户输入的数据都放到pTail->pNext中 
  7.                     4).打印提示信息,让用户输入链表长度len  
  8.                     5).进入循环,i的范围是<len   
  9.                     6). 生成新结点pNew 
  10.                     7).提示用户输入val 
  11.                     8).将val赋给pNew->data 
  12.                     9). pTail->pNext = pNew;   pNew->pNext = NULL; pTail = pNew 
  13. */ 
  14.   
  15. # include <stdio.h> 
  16. # include <stdlib.h> 
  17. typedef struct Node 
  18.         int data; 
  19.         struct Node * pNext; 
  20. }NODE,*PNODE; 
  21. PNODE  Create_List() 
  22.        int i; //计数器  
  23.        int len;//单链表的长度由用户输入  
  24.        int val;//数据域的值由用户输入  
  25.        //生成一个结点  
  26.        PNODE   pHead = (PNODE)malloc(sizeof(NODE)); 
  27.        //新建一个尾结点  
  28.        PNODE   pTail = pHead; 
  29.        pTail->pNext = NULL; 
  30.        //用户输入单链表的长度  
  31.        printf("Please entern the len : "); 
  32.        scanf("%d",&len); 
  33.         
  34.       //循环输入  
  35.        for(i = 0; i < len; i++) 
  36.        { 
  37.              PNODE pNew = (PNODE)malloc(sizeof(NODE));  
  38.                  
  39.              printf("Please enter the %d data : ",i+1);  
  40.              scanf("%d",&val); 
  41.              pNew->data = val; 
  42.              pTail->pNext = pNew; 
  43.              pNew->pNext = NULL; 
  44.              pTail = pNew; //这句很重要  
  45.        } 
  46.        pTail->pNext = NULL; 
  47.         
  48.        return pHead; 
  49. void  Traverse_List(PNODE pHead) 
  50. {     //p指向首节点  
  51.       PNODE  p = pHead->pNext; 
  52.       while(NULL != p )  
  53.       { 
  54.                  printf("%d",p->data);  
  55.                  p = p->pNext;           
  56.       }      
  57.       printf("\n"); 
  58.        
  59. int main(void
  60.     PNODE pHead = NULL; 
  61.     pHead = Create_List(); 
  62.     Traverse_List(pHead);  
  63.     //接受用户输入有暂停的功能  
  64.     getchar(); 
  65.     getchar(); 
  66.      
  67.     return 0;    
  68. //2012年11月1日22:22:24 
  69. /* 
  70.         出错分析: 
  71.           typedef struct Node 
  72.           { 
  73.                   int data; 
  74.                   struct Node *pNext;                        
  75.           }NODE,*PNODE; 
  76.           *PNODE 忘记了*                                     
  77.            
  78.           此程序可以变成扩展性更好的程序  
  79. */ 

数据结构之尾插法创建非循环单链表_two_单链表