这段程序在运行结束后总会崩溃,我调试发现可能是输出函数有问题,请问各位大神如何修改?

#include<stdio.h>#include<stdlib.h>#defineFALSE0#defineOK1#defineERROR0typedefintStat... #include<stdio.h>#include<stdlib.h>
#define FALSE 0
#define OK 1
#define ERROR 0

typedef int Status;
typedef int ElemType;

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

Status InitList_L(LinkList L); //初始话链表,返回头指针Head
LinkList CreatList_L(LinkList L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表

Status InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
LinkList CreatList_L(LinkList L, int n)
{
int i = 0;
LNode *p = NULL;

printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L->next;
L->next = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p = L->next;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}

Status main(void)
{
int n;
LNode L;
InitList_L(&L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(&L, n);

PrintLinkList_L(&L);
return 0;
}
展开
 我来答
shaoqi08110820
2012-09-22 · TA获得超过2508个赞
知道大有可为答主
回答量:1514
采纳率:100%
帮助的人:1742万
展开全部
#include<stdio.h>
#include<stdlib.h>
#define FALSE 0
#define OK 1
#define ERROR 0

typedef int Status;
typedef int ElemType;

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

int InitList_L(LinkList L); //初始话链表,返回头指针Head
void CreatList_L(LinkList &L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表

int InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
void CreatList_L(LinkList &L, int n)
{
int i = 0;
LNode *p= NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L;
L = p;
}
printf("输入完成!\n");
}
void PrintLinkList_L(LinkList L)
{
LinkList p=L;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}

int main(void)
{
int n;
LNode *L=NULL;
InitList_L(L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
CreatList_L(L, n);

PrintLinkList_L(L);
return 0;
}
更多追问追答
追问
编译通不过啊,貌似C语言里面不能void CreatList_L(LinkList &L, int n);     这样声明函数的把,地址只能做形参的吧??
追答
#include
#include
#define FALSE 0
#define OK 1
#define ERROR 0

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

int InitList_L(LinkList L); //初始话链表,返回头指针Head
LinkList CreatList_L(LinkList L, int n); //逆位序输入n个元素的值,建立带头结点的单链表L
void PrintLinkList_L(LinkList L); //输出链表

int InitList_L(LinkList L)
{
L = (LinkList)malloc(sizeof(LNode));
if (L == NULL)
{
exit(ERROR);
}
L->next = NULL;
printf("初始化成功!\n");
return OK;
}
LinkList CreatList_L(LinkList L, int n)
{
int i = 0;
LNode *p= NULL;
printf("请依次输入%d个数据:\n", n);
for (i = n; i > 0; i --)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%d", &p->data);
p->next = L;
L = p;
}
printf("输入完成!\n");
return L;
}
void PrintLinkList_L(LinkList L)
{
LinkList p=L;
while (p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
printf("\n");
}

int main(void)
{
int n;
LNode *L=NULL;
InitList_L(L);
printf("请输入要输入数据的个数:");
scanf("%d", &n);
L=CreatList_L(L, n);

PrintLinkList_L(L);
return 0;
}
dmjcq
2012-09-22 · TA获得超过312个赞
知道小有建树答主
回答量:317
采纳率:0%
帮助的人:193万
展开全部
只见 malloc 不见 free

很有可能是内存泄露导致的错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式