顺序表的插入测试结果怎么写成问题尾部的图片


#include 
#include 
#define MaxSize 50
typedef int ElemType;
typedef struct
{
    ElemType elem[MaxSize];
       int length;
} SqList;

void DispList(SqList *L);
void InitList(SqList *&L);
int ListInsert(SqList *&L,int i,ElemType e);
int ListEmpty(SqList *L);



int main()               //main() function 
{    // 调用对应的函数,完成顺序表的插入功能     
    /********** Begin **********/ 
    int M,a,b,c;
    SqList L;
    InitList(L);
    printf("(1)初始化顺序表L\n");   
    printf("(2)输入顺序表的长度M:\n");
    scanf("%d",&M);
    printf("(3)依次插入M个元素\n");
    for(i=0;iscanf("%d",&a);
    printf("(4)输入要插入元素的位置\n")
    scanf("%d",&b);
    ListInsert(L,int b,ElemType a);
    printf("\n");
    printf("(5)输入要插入的数据元素的值:");
    scanf("%d",%c);
    printf("\n");
    printf("(5)输入插入后的顺序表:")
    void DispList(L);




    /********** End **********/
     

}




/*****顺序表的基本操作*****/


void InitList(SqList *&L)
{    // 操作结果:构造一个空的顺序线性表L     
    /********** Begin **********/ 

    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;

    /********** End **********/
}


int ListInsert(SqList *&L,int i,ElemType e)
{    // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
    // 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
    /********** Begin **********/ 
    int j;
    if(i<1||i>L->length+1||L->length==MaxSize)
        return false;
    i--;
    for(j=L->length;j>i;j--)
        L->elem[j]=L->elem[j-i];
    L->elem[i]=e;
    L->length++;
    return true;
    
    /********** End **********/
}

void DispList(SqList *L)
{     // 初始条件:顺序线性表L已存在
    // 操作结果:依次对L的每个数据元素调用函数vi()输出    
    /********** Begin **********/ 
    int i;
    if (ListEmpty(L)) return;
    for (i=0;ilength;i++)
        printf("%c",L->elem[i]);
    printf("\n");
    /********** End **********/
}
int ListEmpty(SqList *L)
{
    return(L->length==0);
}

求问int main哪里出错了,怎么输出如下格式

img

修改完善如下,改动处见注释,供参考:

#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{
    ElemType elem[MaxSize];
    int length;
} SqList;
 
void DispList(SqList *L);
void InitList(SqList *&L);
int  ListInsert(SqList *&L,int i,ElemType e);
int  ListEmpty(SqList *L);

int main()  //main() function
{    // 调用对应的函数,完成顺序表的插入功能     
    /********** Begin **********/ 
    int M,a,b,c;
    SqList* L;   //SqList L; 修改

    printf("(1)初始化顺序表L\n");
    InitList(L);

    printf("(2)输入顺序表的长度M:\n");
    scanf("%d",&M);
    printf("(3)依次插入M个元素\n");
    for(int i=0;i<M;i++) { //修改
      scanf("%d",&a);
      ListInsert(L,i+1,a); //修改
    }

    printf("(4)输入要插入元素的位置\n");//这里缺 ';'分号
    scanf("%d",&b);
    //printf("\n");
    printf("(5)输入要插入的数据元素的值:");
    scanf("%d",&c);  //scanf("%d",%c);  修改
    ListInsert(L,b,c);                //修改
    //ListInsert(L,int b,ElemType a);
    //printf("\n");

    printf("(5)输入插入后的顺序表:");//这里缺 ';'分号
    DispList(L); //void DispList(L);  修改
   
    return 0;
    /********** End **********/
}
 
/*****顺序表的基本操作*****/

void InitList(SqList *&L)
{    // 操作结果:构造一个空的顺序线性表L     
    /********** Begin **********/ 
 
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
 
    /********** End **********/
}
 
 
int ListInsert(SqList *&L, int i, ElemType e)
{   // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
    // 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1
    /********** Begin **********/ 
    int j;
    if(i < 1 || i > L->length+1 || L->length == MaxSize)
        return false;
    i--;
    for(j = L->length;j > i;j--)
        L->elem[j]=L->elem[j-1]; //L->elem[j-i]; 修改
    L->elem[i]=e;
    L->length++;
    return true;
    
    /********** End **********/
}
 
void DispList(SqList *L)
{   // 初始条件:顺序线性表L已存在
    // 操作结果:依次对L的每个数据元素调用函数vi()输出    
    /********** Begin **********/ 
    int i;
    if (ListEmpty(L)) return;
    for (i=0;i<L->length;i++)
        printf("%d ",L->elem[i]); //修改
        //printf("%c",L->elem[i]);
    printf("\n");
    /********** End **********/
}
int ListEmpty(SqList *L)
{
    return(L->length==0);
}

怎么就不如你意了呢?不是你要将99插入1位置的么?