这是代码,出现了错误,怎么修改怎么输出?

 

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 200
typedef struct
{
    char no[20];
    char name[50];
    float price;
}Elemtype;
typedef struct
{
    Elemtype *elem;
    int length;
}sleep;
void InitList(sleep *L)
{
    L->elem=(Elemtype*)malloc(MAXSIZE);
    if(!L->elem)
    {
        printf("储存分配失败!\n");
        system("pause");
        return;
    }
    L->length=0;
}
void GetElem(sleep *L,int i,Elemtype e)
{
    if((i<1)||(i>L->length))
    {
        printf("i值不合理!\n");
    }
    else
    {
        e=L->elem[i-1];
    }
}
void LocateElem(sleep *L,Elemtype *e)
{
    int i;
    for(i=0;i<L->length;i++)
    {
        if(L->elem[i]==e)
        {
            printf("%s\t%s\t%f\n",L->elem[i].name,L->elem[i].no,L->elem[i].price);
        }
    }
    i=NULL;
}
void ListInsert(sleep *L,int i,Elemtype e)
{
    if(i<0)
    {
        printf("i值不合法!\n");
    }
    if(i>L->length+1)
    {
        printf("数组已满!插入失败!\n");
    }
    if(L->length==MAXSIZE)
    {
        printf("存储空间已满!插入失败!\n");
    }
    int j;
    for(j=L->length-1;j>=i-1;j--)
    {
        L->elem[j+1]=L->elem[j];
        L->elem[i-1]=e;
        L->length++;
    }
    j=NULL;
}
Elemtype data[]=
{
    {"000032","小马宝莉",20},
    {"000032","转生成蜘蛛又怎样",60}
};
int main(int argc, char *argv[])
{
    sleep Sleep;
    InitList(&Sleep);
    int i=0;
    ListInsert(&Sleep,i,data);
    LocateElem(&Sleep,&data);
    system("pause");
    return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 200

typedef struct
{
    char  no[20];
    char  name[50];
    float price;
}Elemtype;

typedef struct
{
    Elemtype *elem;
    int     length;
}sleep;

void InitList(sleep *L)
{
    L->elem=(Elemtype*)malloc(MAXSIZE*sizeof(Elemtype));
    if(!L->elem)
    {
        printf("储存分配失败!\n");
        system("pause");
        return;
    }
    L->length=0;
}
void GetElem(sleep *L,int i,Elemtype e)
{
    if((i<1)||(i>L->length))
    {
        printf("i值不合理!\n");
    }
    else
    {
        e=L->elem[i-1];
    }
}
void LocateElem(sleep *L,Elemtype e)
{
    int i;
    for(i=0;i<L->length;i++)
    {
        if(strcmp(L->elem[i].name,e.name)==0)//if(L->elem[i].no==e)
        {
            printf("%-20s\t%-50s\t%.2f\n",L->elem[i].no,L->elem[i].name,L->elem[i].price);
            break;
        }
    }
}

void ListInsert(sleep *L,int i,Elemtype e)
{
    if(i<0 || i>L->length+1)
    {
        printf("i值不合法!\n");
        return;
    }
    if(L->length==MAXSIZE)
    {
        printf("存储空间已满!插入失败!\n");
        return;
    }
    int j;
    if(L->length==0){
        L->elem[0]=e;
        L->length++;
        return;
    }
    for(j=L->length;j>=i-1;j--)
        L->elem[j]=L->elem[j-1];
    L->elem[i-1]=e;
    L->length++;
}

void PrintList(sleep *L)
{
    int i;
    if(L->length==0)return;
    for(i=0;i<L->length;i++)
        printf("%-20s\t%-50s\t%.2f\n",L->elem[i].no,L->elem[i].name,L->elem[i].price);
}

Elemtype data[]=
{
    {"000032","小马宝莉",20},
    {"000033","转生成蜘蛛又怎样",60}
};

int main(int argc, char *argv[])
{
    sleep Sleep;
    InitList(&Sleep);
    int i,j;
    for(i=0,j=0;i<6;++i,++j,j>1?(j=0):j)
          ListInsert(&Sleep,i+1,data[j]);
    PrintList(&Sleep);
    LocateElem(&Sleep,  data[1]);
    
    return 0;
}