Recebi a seguinte atividade no tópico de Listas em contiguidade fisica:
“Complete os atributos da estrutura lista_contatos no arquivo
lista_contatos.h. Crie um arquivo lista_contatos.c e
implemente as funções inicializar, inserir, print_lista e
destruir, sem modificar a interface (as funções definidas em
lista_contatos.h).
Após isso, modifique a função inserir para que, ao invés de falhar quando não
tiver espaço, proceda da seguinte forma:
● Alocar um vetor de itens com capacidade de 150% da atual;
● Atualizar a nova capacidade;
● Copiar os itens do vetor antigo para o novo vetor e usar o novo
a partir daí;
● Liberar o vetor antigo;
● Inserir o novo item normalmente.
Fique à vontade para adicionar novas funções se achar necessário,
porém, não mude os arquivos .h”
Minha duvida fica em o que eu devo utilizar para implementar essas funções solicitadas(como estamos aprendendo listas em contiguidade fisica, acredito que seja algo assim, mas não sei como), e de que maneira eu consigo fazer isso, visto que, eu não devo mudar a interface.
Vou colocar aqui todos os codigos que vieram da atividade:
//lista_contatos.h//
#ifndef LISTA_H
#define LISTA_H
#include "contato.h"
typedef struct lista_contatos {
//CompleteAqui//
} lista_contatos;
/** Inicializa uma lista vazia de contatos */
void inicializar(lista_contatos *l, int capacidade);
/** Destroi a lista de contatos, liberando o espaço ocupado */
void destruir(lista_contatos *l);
/** Mostra na tela a lista de contatos */
void print_lista(lista_contatos* l);
/**
* Adiciona um elemento na lista de contatos. Retorna 1 se
* a insercao foi bem sucedida e 0 caso contrario
*/
int inserir(lista_contatos *l, contato novo);
#endif // LISTA_H
e
//contato.h//
#ifndef CONTATO_H
#define CONTATO_H
typedef struct contato {
char nome(140);
char telefone(20);
int ano, mes, dia;
} contato;
#endif // CONTATO_H
e finalmente o main:
#include <stdio.h>
#include <stdlib.h>
#include "contato.h"
#include "lista_contatos.h"
int main()
{
lista_contatos amigos;
inicializar(&amigos, 3);
contato a = {"neil tyson", "+1(699)193265", 1958,10,5};
contato b = {"serena williams", "+1(369)654963", 1981,9,26};
contato c = {"edson nascimento", "+55 (11) 35693696", 1940,10,23};
contato d = {"miguel sapateiro", "+49 (0151) 9876589", 1969,1,3};
inserir(&amigos, a);
inserir(&amigos, b);
inserir(&amigos, c);
inserir(&amigos, d);
print_lista(&amigos);
destruir(&amigos);
return 0;
}