Я пытаюсь реализовать вектор или arraylist в C. Код не имеет основного, поэтому я компилирую его с помощью gcc -c file.c. У меня есть два вопроса, первый из которых заключается в том, как реализовать функцию вставки для arraylist, а вторая - почему я получаю сообщение об ошибке, которое list-> не является функцией.vector/arraylist in C
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
typedef struct ArrayList {
int *data;
int capacity;
int size;
ArrayList *list;
ArrayList ArrayList_init(int);
int insert(ArrayList *, int , int);
int set(ArrayList*, int, int);
int destroy(ArrayList *);
int print(ArrayList *);
int append(ArrayList *, int);
int valueOf(ArrayList *, int);
int size(ArrayList *);
int capacity(ArrayList *);
} ArrayList;
ArrayList * ArrayList_Init(int n)
{
ArrayList->data = malloc(sizeof(n) * ArrayList->capacity);
}
int append(ArrayList * list, int val)
{
if (list->size >= list->capacity)
return 1;
else
Arraylist->data[list->size++] = value;
return 0;
}
int print(ArrayList * list)
{
printf("%d\n", list->data);
return 0;
}
int set(ArrayList * list, int val, int index)
{
while(index >= list->size)
append(ArrayList, 0);
return 0;
if (index < 0 || index >= size)
return 1;
}
int destroy(ArrayList * list)
{
free(list->data);
return 0;
}
int insert(ArrayList * list, int val, int index)
{
return 0;
}
int valueOf(ArrayList * list, int element)
{
int x;
x = list->data[element];
return x;
}
int size(ArrayList * list)
{
return list->size;
}
int capacity(ArrayList * list)
{
return list->capacity;
}
int main(void)
{
int n = 3;
int i;
int stat; // Error code
int size;
int val = 0;
int capacity;
// allocate list
ArrayList *list = NULL;
list = ArrayList_Init(n);
printf("ArrayList initialized to %d elements\n", n);
printf("Size of List = %d\n", list->size(list));
printf("Capacity of List = %d\n", list->capacity(list));
// Fill initial values
list->set(list, val++, 0);
list->set(list, val++, 1);
list->set(list, val++, 2);
}
Спасибо
Почему ваши прототипы функций внутри блока 'typedef struct ArrayList'? Дает ли вам номер строки для этой ошибки? – Leigh
все экземпляры списка-> считались проблематичными в тот момент, когда я добавил простую основную функцию, поэтому я думаю, что проблема кроется в этом коде. –
Вы можете показать нам свою функцию 'main()', а также как сообщение об ошибке из gcc? – dpp