lude "stdlib.h"
/*加入这个头文件原因
函数名称:malloc
函数原型:void * malloc(unsigned size);
函数功能:分配size字节的存储区
函数返回:所分配的内存区地址,如果内存不够,返回0
参数说明:
所属文件:
*/
#define NULL 0
typedef struct Lnode{
int data;
struct Lnode* next;
}Lnode;
int n,x;
Lnode* creat()
{
Lnode* head;
Lnode* p1;
n=5;x=1;
p1=(Lnode*)malloc(sizeof(Lnode));
head=p1;
while(n>1)
{
p1->data=x++;
p1->next=(Lnode*)malloc(sizeof(Lnode));
p1=p1->next;
n--;
}
//此时p1是最后一个新建的节点,故需将值赋给其值域.
p1->data=x;
p1->next=NULL;
return head;
}
void print(Lnode* p3) //最好不要老是用head,以防混淆
{
printf("Now,these list is:");
Lnode* p2;
p2=p3;
while(p2!=NULL) //应该判断的是当前指针是否为空.
{
printf("%d",p2->data);
p2=p2->next;
}
}
void main()
{
Lnode* p3;
p3=creat();
print(p3);
}
这样程序的输出结果是:12345.
我想这才是楼主想要的结果吧.
在下对楼主的建议有:
1 学习指针时在稿纸上分析节点里面的数据情况,特别是头指针和最后一个节点的情况,防止出现指针断节,或存在空数据.
2 编程习惯需要稍微改善,尽量规范一些编程.
在下第一次为人解答问题,如有回答不妥的地方,忘见谅!