᥇ꪶꪮ᭙ .778 2021-09-22 20:15 采纳率: 100%
浏览 21
已结题

主函数删除元素代码写的不对。但是我看不出来那个错了


- #include<stdio.h>
#define MaxSize 100

typedef int ElemType;

typedef struct
{
  int t[MaxSize];
    int length;
}sqlist;

int InterList(sqlist*L,int i,int x ) {
    int j;
    if (i< 0 || i> L->length+1||L->length==MaxSize) //
        return (0);
    
    i--;//将顺序表逻辑序号转化为物理序号
    for( j=L->length;j >i; j--)//i指插入点
        L->t[j] = L->t[j - 1];//将数据t[i]及后面的元素后移一个位置
         L->t[i]=x;//插入x
        L->length++;//顺序表的长度增1
    
    return 1;

}

int DeleteElem(sqlist* L,int i) {
    if (i< 0|| i>L->length + 1||L->length==MaxSize) 
        return (0);
    int j;
    i--;//把i逻辑顺序换算成物理顺序
    
    for (j = i; j < L->length; i++){
        L->t[j] = L->t[j + 1];
        
    }
     L->length--;
     return 1;
}

int main() {
    int b, c, k = 0;
    int d;//==插入点
    sqlist a;
    char Y;
    int z = 1;
    while (z)
    {
        printf("输出元素否:y/n\n");
        scanf_s("%c", &Y);
        getchar();
        if (Y == 'y') {
            printf("输入元素%d\n", k + 1);
            scanf_s("%d", &a.t[k]);
             k++;
             getchar();

        }
            
        else
        {
            z = 0;
            a.length = k;
        }
           

    }
    printf("请输入插入前元素:\n");
    
    for (k=0;k<a.length;k++)
    {
        printf("%d\t", a.t[k]);
    }
    printf("请输入插入的位置\n");
    scanf_s("%d", &d);
    printf("请输入插入元素\n");
    scanf_s("%d",&b);
    c = InterList(&a,d,b);
    if (c==0)
    {
        printf("error!\n");
    }
    else
    {    printf("请输入插入后的元素\n");
        for (k = 0; k < a.length; k++) {
            printf("%d\t",a.t[k]);
        }
    }
    printf("请输入删除位置\n");
    scanf_s("%d", &d);
    c= DeleteElem(&a, d);
    if (c==0)
    {
        printf("error!");
    }
    else
    {
        printf("请输入删除元素\n");
        for (size_t k = 0; k <a.length; k++)
        {
          printf(" %d\t", a.t[k]);
        } 
    }
    
    
    return 0;
}

```

  • 写回答

1条回答 默认 最新

  • 快乐鹦鹉 2021-09-22 20:19
    关注

    第34行, for (j = i; j < L->length; i++){
    i++改为j++,写错啦

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月30日
  • 已采纳回答 9月22日
  • 创建了问题 9月22日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)