-3
I have an activity that is to create a struct with SIZE = 5 initially, but I would like it to double its value if it is necessary to insert a sixth value, created a return function for this but the same is with error that I can not identify.
#include <stdio.h>
int SIZE = 5;
struct Lista
{
int tamanho;
int* elementos;
};
typedef struct Lista ArrayList;
/*
Operações
*/
//dobra capacidade
int dobrarCapacidade( ArrayList* ArrayList)
{
SIZE = SIZE * SIZE ; //duplicando a capacidade
int* novo = malloc (sizeof(SIZE));// Arranjo temporario
int i;
for(i = 0; i <= ArrayList->tamanho; i++)
{
novo[i] = ArrayList->elementos[i];
}
free( ArrayList->tamanho);
ArrayList->elementos = novo;
}
//iseri valor em lista
int inserir(int valor, int index, ArrayList* ArrayList)
{
// verifica o se existe espaço
if( ArrayList->tamanho == SIZE)
dobrarCapacidade( ArrayList);
if(index < 0 || index > ArrayList->tamanho)
return 2; // retorna 2 para indicar erro de índice
int i = ArrayList->tamanho; // cria apontador para o final
while(i != index) // repetição que abre espaço
{
ArrayList->elementos[i] = ArrayList->elementos[i - 1];
i--; //decrementa o apontador em direção ao índice
}
ArrayList->elementos[i] = valor; // coloca o valor no índice
ArrayList->tamanho++;
return 0; // retorna 0 para indicar sucesso
}
Take a look at the function realloc. https://pubs.opengroup.org/onlinepubs/9699919799/functions/realloc.html
– anonimo