m0_61684943 2022-09-09 22:35 采纳率: 73.8%
浏览 117
已结题

关于线性表插入删除操作

题目如图

img

img

我的代码如下

#include <stdio.h>
#include <stdlib.h>

typedef struct
{
    int *elem;
    int length;
}Sqlist;

void insert(Sqlist *L,int m,int n)
{
    if(m>=1 && m<=L->length+1){
    for(int j=L->length-1;j>=m-1;j--)
        L->elem[j+1]=L->elem[j];
    L->elem[m-1]=n;
    ++L->length;}
}

void delete_(Sqlist *L,int m)
{
    if(m<1 || m>L->length)
        printf("%d\n",-1);
    if(m>=1 && m<=L->length){
    printf("%d\n",L->elem[m-1]);
    for (int j=m;j<=L->length;j++)
        L->elem[j-1]=L->elem[j];
    --L->length;}
}

int main()
{
    int number,sign,m,n;
    Sqlist tmp;
    Sqlist *L=&tmp;
    L->elem=(int*)malloc(sizeof(int)*100010);
    scanf("%d",&L->length);
    for (int i=0;i<L->length;i++)
        scanf("%d",&L->elem[i]);
    scanf("%d",&number);
    for (int k=0;k<number;k++)
    {
        scanf("%d",&sign);
        if (sign==1)
        {
            scanf("%d%d",&m,&n);
            insert(L,m,n);
        }
        if (sign==2)
        {
            scanf("%d",&m);
            delete_(L,m);
        }
    }
    free(L->elem);
    return 0;
}

问题是,在一些输出中出现了问题,而且只错其中一个输出,前后都对,如图

img

img


麻烦帮忙找一下错误,谢谢

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-09-09 22:39
    关注

    59会变成73?
    你的测试用例呢?实际输入的数据是哪些?

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月9日
  • 赞助了问题酬金20元 9月9日
  • 修改了问题 9月9日
  • 创建了问题 9月9日