本人是大一新生,写单链表时遇见一点问题,求帮忙解决一下(用的是C语言)
这是我制定的库文件。
#include <stdio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LinkNode;
LinkNode *CreateListF(LinkNode *L, ElemType a[], int n);
void InitList(LinkNode *L);
void DestroyList(LinkNode *L);
int ListEmpty(LinkNode *L);
int ListLength(LinkNode *L);
void DispList(LinkNode *L);
int GetElem(LinkNode *L,int i,ElemType e);
int LocateList(LinkNode *L, ElemType e);
int ListInsert(LinkNode *L, int i, ElemType e);
int ListDelete(LinkNode *L, int i, ElemType e);
LinkNode *CreateListF(LinkNode *L, ElemType a[], int n)
{
LinkNode *s;
int i;
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
for(i=0;i<n;i++)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
void InitList(LinkNode *L)
{
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next == NULL;
}
void DestroyList(LinkNode *L)
{
LinkNode *pre=L, *p=L->next;
while(p != NULL)
{
free(pre);
pre = p;
p = pre->next;
}
free(pre);
}
int ListEmpty(LinkNode *L)
{
if(L->next == NULL)
{
return true;
}
}
int ListLength(LinkNode *L)
{
LinkNode *s=L;
int i;
while(s->next!=NULL)
{
s = s->next;
i++;
}
return i;
}
void DispList(LinkNode *L)
{
LinkNode *s=L;
int i;
while(s->next!=NULL)
{
printf("%d",s->data);
s=s->next;
}
printf("\n");
}
int GetElem(LinkNode *L,int i,ElemType e)
{
LinkNode *s=L;
int j=0;
while(jnext!=NULL)
{
s = s->next;
j++;
}
if(s=NULL)
{
return false;
}
else
{
e = s->data;
return true;
}
}
int LocateList(LinkNode *L, ElemType e)
{
LinkNode *s=L;
int i=1;
while(s->next!=NULL || s->data!=e)
{
s = s->next;
i++;
}
if(s=NULL)
{
return false;
}
else
{
return true;
}
}
int ListInsert(LinkNode *L, int i, ElemType e)
{
LinkNode *s=L, *p;
int j=0;
if(i<=0)
{
return false;
}
while(j<i && s!=NULL)
{
s = s->next;
j++;
}
if(s==NULL)
{
return false;
}
else
{
p = (LinkNode *)malloc(sizeof(LinkNode));
p->data = e;
p->next = s->next;
s->next = p;
return true;
}
}
int ListDelete(LinkNode *L, int i, ElemType e)
{
LinkNode *s=L, *p;
int j=0;
if(i<=0)
{
return false;
}
while(j<i && s!=NULL)
{
s = s->next;
j++;
}
if(s==NULL)
{
return false;
}
else
{
p = s->next;
if(p==NULL)
{
return false;
}
e = p->data;
s->next = p->next;
free(p);
return true;
}
}
下面是我的主题函数
#include "LinkNode.h"
int main()
{
LinkNode *LA, *LB, *LC;
int la[7]={1,3,4,14,5,6,17},lb[10]={1,5,8,7,9,11,2,3,4,0},i,j;
CreateList(&LA,la[7],7);
DiapList(LA);
DestroyList(LA);
CreateList(&LB,lb[10],10);
DispList(LB);
DestroyList(LB);
return 0;
}
编译的错误如下