C程序老是出现一个错误,高手帮忙改下

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:39:41
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void InitList_L(LinkList &L )
{
/*构造一个空的线性表L*/
L = malloc(sizeof(LNode));
if(!L) exit(1); /*存储空间分配失败*/
L->next=NULL;
}
void DestroyList_L(LinkList &L)
{
/*销毁线性表L*/
LinkList p;
while(L)
{
p=L;
L=L->next;
delete p;
}
L=NULL;
}
int ListLength_L(LinkList L)
/*返回L中数据元素个数*/
{
int j;
LinkList p;
p=L;j=0;
while(p->next)
{
p=p->next;j++;
}
return j;
}

bool GetElem_L(LinkList L,int i,ElemType &e)
/*用e返回L中第i个数据元素的值*/
{
LinkList p; int j;
p=L->next;j=1;
while(p&&j<i)
{

问题在这两句
L = malloc(sizeof(LNode)); 11行
s = malloc(sizeof(LNode)); 68行

malloc函数的返回值是void*,无法自己转换成LinkList类型
所以应改为L = (LinkList)malloc(sizeof(LNode));
s = LinkList)malloc(sizeof(LNode));

改好:
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void InitList_L(LinkList &L )
{
/*构造一个空的线性表L*/
L =(LNode*) malloc(sizeof(LNode));
if(!L) exit(1); /*存储空间分配失败*/
L->next=NULL;
}
void DestroyList_L(LinkList &L)
{
/*销毁线性表L*/
LinkList p;
while(L)
{
p=L;
L=L->next;
delete p;
}
L=NULL;
}
int ListLength_L(LinkList L)
/*返回L中数据元素个数*/
{
int j;
LinkList p;
p=L;j=0;
while(p->next)
{
p=p->next;j++;
}
return j;
}