From f1ef5480d11f8cbe7773cc7f070b2ca4e7e24293 Mon Sep 17 00:00:00 2001 From: Leonardo Krambeck <lk19@inf.ufpr.br> Date: Thu, 24 Oct 2019 17:02:52 -0300 Subject: [PATCH] implementa tamanho e insere fim --- lib_lista.c | 44 ++++++++++++++++++++++++++++---------------- main.c | 8 +++++++- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/lib_lista.c b/lib_lista.c index 05e3ee2..8b93226 100644 --- a/lib_lista.c +++ b/lib_lista.c @@ -60,10 +60,6 @@ void destroi_lista(t_lista *l) l->tamanho = 0; } -/* - 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) { t_nodo *new; @@ -73,9 +69,8 @@ int insere_inicio_lista(int item, t_lista *l) return 0; new->chave = item; - - new->prox = l->ini->prox; new->prev = l->ini; + new->prox = l->ini->prox; l->ini->prox->prev = new; l->ini->prox = new; @@ -85,17 +80,34 @@ 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;} +int tamanho_lista(int *tam, t_lista *l) +{ + if (l->ini == NULL && l->fim == NULL) + return 0; -/* - 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;} + *tam = l->tamanho; + return 1; +} + +int insere_fim_lista(int item, t_lista *l) +{ + t_nodo *new; + + new = (t_nodo*) malloc (sizeof (t_nodo)); + if (new == NULL) + return 0; + + new->chave = item; + new->prox = l->fim; + new->prev = l->fim->prev; + + l->fim->prev->prox = new; + l->fim->prev = new; + + l->tamanho++; + + return 1; +} /* Insere o elemento item na lista de maneira que ela fique em ordem diff --git a/main.c b/main.c index e073f7c..1658764 100644 --- a/main.c +++ b/main.c @@ -5,10 +5,16 @@ int main () { t_lista l; + int tam; inicializa_lista(&l); insere_inicio_lista (10, &l); - if (!lista_vazia(&l)) printf("nao vazia\n"); + insere_inicio_lista (5, &l); + tamanho_lista(&tam, &l); + printf ("tam: %d\n",tam); + insere_fim_lista (8, &l); + tamanho_lista(&tam, &l); + printf ("tam: %d\n",tam); return 0; } -- GitLab