少不读水浒 2022-09-19 19:43 采纳率: 57.1%
浏览 32
已结题

前面运行正常,到了Insertlist就跳过,不运行,

typedef struct {
elemtype data[sizemax];
int length;

}seqlist;
void InitList(seqlist* a, int b) {
int i;
for (i = 0; i < b; i++)
{
a->data[i] = 0;

};

};

void Insertlist(seqlist* a, int b, int c)
{

for (int j = sizeof(a) / sizeof(a[0])- 1; j >=  c - 1; j--)
{
    a->data[j + 1] = a->data[j];};
a->data[c - 1] = b;

};
int main()
{
int base[9] = { 1,2,10,4,5,6,3,8 };
seqlist insert;
int N = sizeof(base) / sizeof(base[0]);
InitList(&insert, N);

for (int i = 0; i < 9; i++) {
    insert.data[i] = base[i];

};
Insertlist(&insert, 7, 3);



return 0;

}

  • 写回答

3条回答 默认 最新

  • 关注

    a是指针,sizeof(a)得到的大小是指针的大小,在32为系统中,指针的大小是4,64位系统中,指针的大小是8.。所以你的逻辑是错误的。
    既然你的结构体中已经定义了length来记录数组的实际长度,所以,在插入链表的时候,用a->length就可以了。
    代码修改如下(修改部分代码中有注释):

    
    typedef struct {
        elemtype data[sizemax];
        int length;
    
    }seqlist;
    void InitList(seqlist* a, int b) {
        int i;
        for (i = 0; i < b; i++)
        {
            a->data[i] = 0;
    
        };
        a->length = b; //修改1  这里记录初始长度
    };
    
    void Insertlist(seqlist* a, int b, int c)
    {
        for (int j = a->length -1; j >= c - 1; j--) //修改2  j从a->length-1开始
        {
            a->data[j + 1] = a->data[j];
        };
        a->data[c - 1] = b;
        a->length += 1; //修改3  长度+1
    };
    int main()
    {
        int base[9] = { 1,2,10,4,5,6,3,8 };
        seqlist insert;
        int N = sizeof(base) / sizeof(base[0]);
        InitList(&insert, N);
    
        for (int i = 0; i < 9; i++) {
            insert.data[i] = base[i];
        };
        Insertlist(&insert, 7, 3);
    
    
    
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)