Fivebb. 2022-10-19 16:41 采纳率: 62.5%
浏览 25
已结题

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


#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;
    InitList(L);
    printf("(1)初始化顺序表L\n");   
    printf("(2)输入顺序表的长度M:\n");
    scanf("%d",&M);
    printf("(3)依次插入M个元素\n");
    for(i=0;i<M;i++)
      scanf("%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;i<L->length;i++)
        printf("%c",L->elem[i]);
    printf("\n");
    /********** End **********/
}
int ListEmpty(SqList *L)
{
    return(L->length==0);
}

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

img

  • 写回答

2条回答 默认 最新

  • qzjhjxj 2022-10-19 19:57
    关注

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

    #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);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月22日
  • 已采纳回答 10月20日
  • 创建了问题 10月19日

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥15 this signal is connected to multiple drivers怎么解决
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus