C语言实现单链表的建立 代码中有部分不明,请指教!

来源:百度知道 编辑:UC知道 时间:2024/05/19 06:55:19
NODE *create()
{
NODE *head,*q,*p;
int a,n;
head=(NODE *) malloc(sizeof(NODE));
q=head;
printf("\ninput number of the list:");
scanf("%d",&n);
if(n>0)
{
printf("Input the list:");
while(n>0)
{
scanf("%d",&a);
p=(NODE*)malloc(sizeof(NODE));
p->data=a;
q->next = p;
//这里的代码是什么意思? 是把p的地址赋值给q->next 吗?
q=p; // 还有这里的代码是什么意思?
n--;
}
}
q->next =NULL;
return (head);
}
}

}

q->next的类型和p是一样的,就是让q的next指向新生成的节点p
q=p 这个是让当前的节点q,移到新增的节点p上

你先去看一下 NODE 结构体成员会很快明的。

我估计是这样的,:

struct NODE {
int data;
struct NODE *next;
}