数据结构 线性表动态分配 打印不出来

使用mollac函数增加空间之后,打印出来的空表
#include<stdlib.h>

#include<stdio.h>
#define initsize 10
typedef struct
{
int *data;
int maxsize;
int length;
} seqlist;

void initlist (seqlist &l)
{
l.data=(int )malloc(initsizesizeof(int));
for(int i = 0;i<l.length;i++) {
l.data[i]=0;
l.length=i;
}
l.maxsize=initsize;
}

void increasesize(seqlist &l,int len)
{
int* p=l.data;
l.data=(int*)malloc((l.maxsize+len)*sizeof(int));
for(int i=0;i<l.length;i++)
{
l.data[i]=p[i];
}
l.maxsize=l.maxsize+len;
free(p);
}
int main()
{

 seqlist l;
 initlist (l);
 increasesize(l,5);
 for(int i=0;i<l.length;i++)        
    printf("data[%d]=%d\n",i,l.data[i]);
 
 return 0;

}

编译通过,运行为空表

初始化不对啊。for循环不成立,你得先给length设置值了才能循环

#include<stdio.h>
#define initsize 10
typedef struct
{
    int *data;
    int maxsize;
    int length;
} seqlist;

void initlist (seqlist &l)
{
    l.data=(int*)malloc(initsize*sizeof(int));
    for(int i=0;i<5;i++)
        l.data[i] = i;
    l.length = 5;
    l.maxsize=initsize;
}

void increasesize(seqlist &l,int len)
{
    int* p=l.data;
    l.data=(int*)malloc((l.maxsize+len)*sizeof(int));
    for(int i=0;i<l.length;i++)
    {
        l.data[i]=p[i];
    }
    l.maxsize=l.maxsize+len;
    free(p);
}
int main()
{
    seqlist l;
    initlist (l);
    increasesize(l,5);
    for(int i=0;i<l.length;i++)        
        printf("data[%d]=%d\n",i,l.data[i]);
    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632