啊啊啊啊好难 2023-11-05 15:42 采纳率: 92.9%
浏览 5
已结题

能不能帮我看一下为什么我的顺序表没有插入成功呀😭


#include<stdio.h> 
#include<stdbool.h>
#define MaxSize 10

typedef struct{
    int data[MaxSize];
    int length;
}SqList;

InitList(SqList * L){//初始化 空表 
    int i;
    for(i=0;i<MaxSize;i++)
        L->data[i] = 0;

    L->length = 0; 
}

bool ListInsert(SqList * L , int i , int e) //在顺序表的位序为 i 处插入元素e 
//应该判断 i 的值是否合法 即在[ i , length + 1]范围内,大于length + 1 插入即不连续 
//判断顺序表是否到达最大容量,还能不能继续添加 
{
    if(i < 1 || i > L->length + 1) //i是否有效 
        return false;
        
    if(L->length >= MaxSize )//空间是否已满 
        return false;
    
    int j;
    for(j = L->length ; j >= i ; j--)
        
        L->data[j] = L->data[j-1];//第i个元素以及之后的元素后移 ,j-1附给j,数组下标等于位序-1
        L->data[i - 1]  = e;//在位序为 i 处插入e 
        L->length ++;
        
    return true;


}
int main(){
    SqList L;
    SqList * q = & L;
    InitList(q);//初始化
    
    int i;
    for(i = 0 ; i < 5 ; i ++)
        
        L.data[i] = i ;
    
    L.length = sizeof(L.data) / sizeof(L.data[0]);
     
    ListInsert(q, 2, 9) ;
    
    for(i = 0;i < L.length ; i++){
        printf("data[%d] = %d \n", i , L.data[i]);
    }
    
    return 0;
}

img

  • 写回答

2条回答 默认 最新

  • Spartinaer 2023-11-06 10:30
    关注

    有几个问题啊,首先for后面尽量跟{},这样可读性会更好一点,即使只有一条语句,然后有一段代码不理解你为什么那么写

    L.length = sizeof(L.data) / sizeof(L.data[0]);
    

    这也是你程序的问题,sizeof(L.data[0])结果是0吧,那0可以做除数吗?跑的时候应该会有一个运行时异常

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月6日
  • 已采纳回答 11月6日
  • 创建了问题 11月5日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表