为什么我输入 节点的个数 len = 0;怎不显示 分配失败 ??
#include <stdio.h>#include <malloc.h>
#include <stdlib.h>
typedef struct node
{
int date;//数据域
struct node * pnext;//指针域
}NODE,*PNODE;//NODE等价于struct node,PNODE等价于struct node *;
//声明
PNODE creat_list(void);//创建一个链表,
void traverse_list(PNODE phead);
int main()
{
PNODE phead = NULL;
phead = creat_list();//创建一个链表,把头结点的地址赋给phead;
traverse_list(phead);
return 0;
}
PNODE creat_list(void)
{
int len;//存放有效节点的个数
int i;
int val;//临时存放用户输入的节点的值
//动态构造头结点
PNODE phead = (PNODE)malloc(sizeof(NODE));
if (NULL == phead)
{
printf("分配失败!");
exit(-1);
}
PNODE ptail = phead;//构造尾节点
ptail->pnext = NULL;
printf("请输入节点的个数:len = ");
scanf("%d",&len);
for (i=0; i<len; i++)
{
printf("请输入第%d个节点的个数:",i+1);
scanf("%d",&val);
//动态构造一个新节点
PNODE pnew = (PNODE)malloc(sizeof(NODE));
if (NULL == pnew)
{
printf("分配失败!!\n");
exit(-1);
}
pnew->date = val;
ptail->pnext = pnew;//新节点挂在尾节点后
pnew->pnext = NULL;
ptail = pnew;
}
return phead;
}
void traverse_list(PNODE phead)
{
PNODE p = phead->pnext;
while (NULL != p)
{
printf("%3d",p->date);
p = p->pnext;
}
printf("\n");
return ;
}