C语言实现单链表输入及输出,我看不出来我哪里错了

#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;

typedef struct LNode{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

void InitLinkList(LNode *L)
{
	L=NULL;
}

LinkList List_TailInsert(LNode *L)
{
	int x;
	L=(LinkList)malloc(sizeof(LNode));
	if(L==NULL)
	{
		printf("error!");
		return 0;
	}
	LNode *s,*r;
	scanf("%d",&x);
	while(x!=9999)
	{
		s=(LNode *)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;
		scanf("%d",&x);
	}
	r->next=NULL;
	return L;
}

void ShowLinkList(LNode *L)
{
	int n=0;
	while(L!=NULL)
	{
		printf("%4dºÅ--%4d\n",n+1,L->data);
		L=L->next;
		n++;
		
	}
}

int main()
{
	LNode *L;
	InitLinkList(L);
	List_TailInsert(L);
	ShowLinkList(L);
	return 0;
}

 

头结点都没有了,链表有问题,

LinkList List_TailInsert(LNode *L)
{
	int x;
	L=(LinkList)malloc(sizeof(LNode));

L应该是头结点,不用用L节点重新分配内存,应该是遍历都最后再加子节点。

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632