首先,你做动态分配数组的方式是错误的。
我不确定您是否真的想要您写的东西,即链表,或者您所说的东西,即动态分配的数组。
下面是你应该如何做动态分配的数组。希望能帮助到你。通过这样做,您可以在内存不足之前将任意数量的整数添加到数组中。您可以使用数组表示法访问数组,但首先使用指针:darray->array[0]
但是,无法使用此语法访问您的链接列表。
#include <stdio.h>
#include <stdlib.h>
#define INITSIZE 8
typedef struct dyarr{
int num;
int max;
int *array;
}arr;
arr* makeArr();
void add( arr*, int );
int main( int argc, char const *argv[] ){
int t;
arr* darray = makeArr();
while( scanf( "%d", &t ) != EOF ){
add( darray, t );
}
int i;
for( i = 0; i<darray->num; i++ ){
printf( "%d\n", darray->array[i] );
}
getchar();
return 0;
}
arr* makeArr(){
arr* A = malloc( sizeof( arr ) );
A->max = MAXSIZE;
A->num = 0;
A->array = malloc( sizeof( int )*A->max );
return A;
}
void add( arr* a, int i ){
if( a->num == a->max ){
a->max *= 2;
a->array = realloc( a->array, a->max );
}
a->array[a->num++] = i;
}