- /*
- 尾插法创建非循环单链表程序思维:
- 1.尾插法创建非循环单链表函数逻辑:
- 1).声明一个计数器i , 一个由用户输入链表长度len ,一个由用户输入数据域的值 val
- 2).生成一个新的结点pHead
- 3).生成一个pTail尾结点,用户输入的数据都放到pTail->pNext中
- 4).打印提示信息,让用户输入链表长度len
- 5).进入循环,i的范围是<len
- 6). 生成新结点pNew
- 7).提示用户输入val
- 8).将val赋给pNew->data
- 9). pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew
- */
- # include <stdio.h>
- # include <stdlib.h>
- typedef struct Node
- {
- int data;
- struct Node * pNext;
- }NODE,*PNODE;
- PNODE Create_List()
- {
- int i; //计数器
- int len;//单链表的长度由用户输入
- int val;//数据域的值由用户输入
- //生成一个结点
- PNODE pHead = (PNODE)malloc(sizeof(NODE));
- //新建一个尾结点
- PNODE pTail = pHead;
- pTail->pNext = NULL;
- //用户输入单链表的长度
- printf("Please entern the len : ");
- scanf("%d",&len);
- //循环输入
- for(i = 0; i < len; i++)
- {
- PNODE pNew = (PNODE)malloc(sizeof(NODE));
- printf("Please enter the %d data : ",i+1);
- scanf("%d",&val);
- pNew->data = val;
- pTail->pNext = pNew;
- pNew->pNext = NULL;
- pTail = pNew; //这句很重要
- }
- pTail->pNext = NULL;
- return pHead;
- }
- void Traverse_List(PNODE pHead)
- { //p指向首节点
- PNODE p = pHead->pNext;
- while(NULL != p )
- {
- printf("%d",p->data);
- p = p->pNext;
- }
- printf("\n");
- }
- int main(void)
- {
- PNODE pHead = NULL;
- pHead = Create_List();
- Traverse_List(pHead);
- //接受用户输入有暂停的功能
- getchar();
- getchar();
- return 0;
- }
- //2012年11月1日22:22:24
- /*
- 出错分析:
- typedef struct Node
- {
- int data;
- struct Node *pNext;
- }NODE,*PNODE;
- *PNODE 忘记了*
- 此程序可以变成扩展性更好的程序
- */