#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!