求助 ,快要考试了,帮帮我吧
# include <stdio.h># include <malloc.h>
# include <stdlib.h>
struct Node
{
int data ; //数据域
struct Node * pNext ; //指针域
} ;
//函数声明
struct Node * create_list (void) ;
void traverse_list ( struct Node * ) ;
int main (void)
{
struct Node * pHead = NULL ; //等价于struct Node * pHead ;
pHead = create_list ( ) ;//功能:创建一个非循环单链表,并将该链表的头结点的地址付给pHead
traverse_list (pHead) ;
return 0 ;
}
struct Node * create_list (void)
{
int len ;//用来存放有效节点的个数
int i ;
int val ;//用来临时存放用户输入的节点的值
struct Node * pHead = ( struct Node * )malloc(sizeof(struct Node ) ) ;
struct Node * pNew = (struct Node *)malloc(sizeof(struct Node ) ) ;//此处依然是 位置放置不对 ,和前面的 类似
struct Node * pTail = pHead ;
//分配了一个不存放有效数据的头结点
if (NULL==pHead)
{
printf ("分配失败,程序终止!\n") ;
exit (-1) ;
}
pTail->pNext=NULL ;
printf ("请输入您需要生成链表的节点个数;len =") ;
scanf ("%d" ,&len) ;
for ( i=0; i<len; ++i )
{
printf ("请输入%d个节点的值:", i+1) ;
scanf ("%d", &val) ;
if (pNew==NULL)
{
printf ("分配失败,程序终止!\n") ;
exit (-1) ;//终止程序
}
pNew->data = val ;
pTail->pNext = pNew ;
pNew->pNext = NULL ;
pTail = pNew ;
}
return pHead ;
}
void traverse_list (struct Node *pHead )
{
struct Node * ptem= pHead->pNext ;
while ( NULL != ptem )
{
printf ("%d\n" ,ptem->data ) ;
ptem = ptem->pNext ;
}
return ;
}
输出的结果是:
请输入您需要生成链表的节点个数;len =3
请输入1个节点的值:4
请输入2个节点的值:5
请输入3个节点的值:7
7
Press any key to continue
为什么不是 4、5、7,而只有7 呀 求帮忙 万分叩谢!!