c语言数据结构单链表(头插入法)

2025-02-01 02:05:29
推荐回答(2个)
回答1:

head=(LNode *)malloc(sizeof(LNode));

这一句不要,没啥用处,除非你head指向的节点也就是第一个节点的data不需要数据

head->next=NULL;这里修改为head=NULL;
让head先指向NULL,也就是没有节点
其实这个可以不要,再主函数中,先让链表是空链表即可(即让head=NULL)

head->data=data;
head->next=p->next;
head->next=p;
关键在这里
你仔细考虑一下,一般来说头插法的head只是一个指针,不要对head指向的那个节点操作,对p操作完成后,让head指过去即可
所以修改为
p->data=data; //赋值过去,因为你现在申请了p的内存空间
p->next=head; //把head指向的那个节点连接到p的后面,这样完成头插
// 这是head没有用了,p成为链表的头指针
head=p; //head再指向这个链表的头部,也就是p指向的节点,为下一次循环做准备

head=Createlist(head);//链表初始化
主函数中这样不太好,建议不要重名

回答2:

int Print(LNode *head)
{
LNode *j; //新建一个指针,让它指向head,从而进行输出操作
j=head;
while(j->next!=NULL)
{
printf("%d ",j->data);
j=j->next;
}
}
改为:
int Print(LNode *head)
{
LNode *j; //新建一个指针,让它指向head,从而进行输出操作
j=head;
while(j!=NULL)
{
printf("%d ",j->data);
j=j->next;
}
}