文件 DoubleList.htypedef struct DulNode{ int data; struct DulN
1个回答

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 编程习惯需要稍微改善,尽量规范一些编程.

在下第一次为人解答问题,如有回答不妥的地方,忘见谅!