diff --git a/lib_lista.c b/lib_lista.c new file mode 100644 index 0000000000000000000000000000000000000000..ec5516e82afd51509f7bd6b5f086d34bbb7c0590 --- /dev/null +++ b/lib_lista.c @@ -0,0 +1,135 @@ +#include <stdio.h> +#include <stdlib.h> + +#include "lib_lista.h" + +/* + Cria uma lista vazia. Ela eh duplamente encadeada e tem sentinelas no + inicio e no final. Tambem tem um apontador para um elemento qualquer. +*/ +int inicializa_lista(t_lista *l) +{ + t_nodo *sentinel; + + /* Insert beginning sentinel */ + sentinel = (t_nodo*) malloc (sizeof (t_nodo)); + + if (sentinel == NULL) + return 0; + + sentinel->prev = l->ini; + l->ini = sentinel; + + /* Insert end sentinel */ + sentinel = (t_nodo*) malloc (sizeof (t_nodo)); + + if (sentinel == NULL) + return 0; + + l->ini->prox = sentinel; + sentinel->prev = l->ini; + l->fim = sentinel; + + l->tamanho = 0; + + return 1; +} + +/* + Retorna 1 se a lista está vazia e zero caso contrário. +*/ +int lista_vazia(t_lista *l){return 1;} + +/* + Remove todos os elementos da lista e faz com que ela aponte para NULL. +*/ +void destroi_lista(t_lista *l){} + +/* + Insere o elemento item no início da lista. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int insere_inicio_lista(int item, t_lista *l){return 1;} + +/* + Retorna o tamanho da lista em *tam. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int tamanho_lista(int *tam, t_lista *l){return 1;} + +/* + Insere o elemento item no final da lista. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int insere_fim_lista(int item, t_lista *l){return 1;} + +/* + Insere o elemento item na lista de maneira que ela fique em ordem + crescente, do início para o final dela. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int insere_ordenado_lista(int item, t_lista *l){return 1;} + +/* + Remove o primeiro elemento da lista e o retorna em *item. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int remove_inicio_lista(int *item, t_lista *l){return 1;} + +/* + Remove o último elemento da lista e o retorna em *item. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int remove_fim_lista(int *item, t_lista *l){return 1;} + +/* + Se o elemento chave existir na lista, o retorna em *item. + Retorna 1 se a operação foi bem sucedida e zero caso contrário + (elemento não encontrado também retorna zero). +*/ +int remove_item_lista(int chave, int *item, t_lista *l){return 1;} + +/* + Retorna 1 se o elemento contendo a chave chave existe na lista, + caso contrário retorna zero. +*/ +int pertence_lista(int chave, t_lista *l){return 1;} + +/* + Inicializa o ponteiro atual para o primeiro elemento da lista. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int inicializa_atual_inicio(t_lista *l){return 1;} + +/* + Inicializa o ponteiro atual para o ultimo elemento da lista. + Retorna 1 se a operação foi bem sucedida e zero caso contrário. +*/ +int inicializa_atual_fim(t_lista *l){return 1;} + +/* + Faz o ponteiro atual apontar para o próximo nodo da lista l e retorna + este ponteiro. Se atual estiver apontando para o último, isto é, não + tem próximo, retorna NULL. +*/ +void incrementa_atual(t_lista *l){} + +/* + Faz o ponteiro atual apontar para o nodo anterior da lista l e retorna + este ponteiro. Se atual estiver apontando para o primeiro, isto é, não + tem anterior, retorna NULL. +*/ +void decrementa_atual(t_lista *l){} + +/* + Retorna em *item o valor contido na chave apontada pelo ponteiro atual. + Se atual não for válido a função retorna zero senão retorna 1. +*/ +int consulta_item_atual(int *item, t_lista *atual){return 1;} + +/* + Remove o elemento apontado por atual da lista l e o retorna em *item. + Faz o atual apontar para o sucessor do nodo removido. + Retorna 1 se houve sucesso e zero caso contrário. +*/ +int remove_item_atual(int *item, t_lista *l){return 1;} diff --git a/main.c b/main.c new file mode 100644 index 0000000000000000000000000000000000000000..04fc9b0b76b225a75c0803e85bd5ec48f0fedf3b --- /dev/null +++ b/main.c @@ -0,0 +1,12 @@ +#include <stdio.h> + +#include "lib_lista.h" + +int main () +{ + t_lista l; + + if (inicializa_lista(&l)) printf ("inicializou\n"); + + return 0; +}