哪位高手能帮忙调试一下小弟我的程序,或者找出程序中的有关问题,在调试时总是提示函数InitList L=(LinkList)malloc(sizeof(LNODE))
谁能帮忙调试一下我的程序,或者找出程序中的问题,在调试时总是提示函数InitList L=(LinkList)malloc(sizeof(LNODE))
#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct LNode{
//定义结点
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L){
L=(LinkList)malloc(sizeof(LNODE));
if(!L)
exit(OVERFLOW);
L.next=NULL;
}
void DestroyList(LinkList L){
LinkList q;
while(L){
q=L.next;
free(L);
L=q;
}
}
void ClearList(LinkList L){
LinkList p,q;
p=L.next;
while(p){
q=p;
free(p);
p=q.next;
}
L.next=NULL;
}
Status Listempty(LinkList&L){
if(L.next)
return FALSE;
else
rerurn TRUE;
}
int ListLength(LinkList L)
{ // 初始条件:线性表L已存在。操作结果:返回L中数据元素个数
int i=0;
LinkList p=L->next; // p指向第一个结点
while(p) // 没到表尾
{
i++;
p=p->next;
}
return i;
}
Status Getelem(LinkList L,int i,ElemType e){
int p;
LinkList q;
q=L;
if(i<1||i>ListLength(L))
return ERROR;
for(p=0;p<i;p++){
q=q.next;
}
e=q.data;
return OK;
}
void LocateElem(LinkList L,ElemTyp e){
LinkList p;
p=L.next;
int j=1,k;
while(p.next!=NULL){
if(p.data==e){
printf("该数据在此链表的位置为:%d",j);
k=1;
}
p=p.next;
j++;
}
if(k==0)
printf("所查找的数据不存在");
}
Status ListInsert(LinkList L,int i,ElemType e) // 算法2.9。不改变L
{ // 在带头结点的单链线性表L中第i个位置之前插入元素e
int j=0;
LinkList p=L,s;
while(p&&j<i-1) // 寻找第i-1个结点
{
p=p->next;
j++;
}
if(!p||j>i-1) // i小于1或者大于表长
return ERROR;
s=(LinkList)malloc(sizeof(LNode)); // 生成新结点
s->data=e; // 插入L中
s->next=p->next;
p->next=s;
return OK;
}
Status ListDelete(LinkList L,int i,int e) // 算法2.10。不改变L
{ // 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
int j=0;
LinkList p=L,q;
while(p->next&&j<i-1) // 寻找第i个结点,并令p指向其前驱
{
p=p->next;
j++;