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

这程序不知道哪里出问题了,纠结了一天了,求大神!!!~~~#include<stdio.h>#include<stdlib.h>typedefintElemtype;ty... 这程序不知道哪里出问题了,纠结了一天了,求大神!!!~~~

#include <stdio.h>
#include <stdlib.h>

typedef int Elemtype;

typedef struct
{
Elemtype data;
struct LNode *next;
}LNode;

LNode *Createlist(LNode *head) //创建单链表,头插入法
{
LNode *p;
Elemtype data;
head=(LNode *)malloc(sizeof(LNode));
head->next=NULL;
while(1)
{
printf("please input data: ");
scanf("%d",&data);
if(data==777)break; //直到输入的数据为777时,停止输入
p=(LNode *)malloc(sizeof(LNode));
head->data=data;
head->next=p->next;
head->next=p;
}
return head;
}

int Print(LNode *head)
{
LNode *j; //新建一个指针,让它指向head,从而进行输出操作
j=head;
while(j->next!=NULL)
{
printf("%d ",j->data);
j=j->next;
}
}
int main()
{
LNode *head;
head=Createlist(head);//链表初始化
Print(head); //打印单链表数据
return 0;
}
展开
 我来答
cpucash
推荐于2018-07-27 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:967万
展开全部
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);//链表初始化
主函数中这样不太好,建议不要重名
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
10389089
推荐于2017-09-04 · TA获得超过509个赞
知道小有建树答主
回答量:246
采纳率:0%
帮助的人:198万
展开全部
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;
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式