Skip to content
Snippets Groups Projects
Commit dbe205fe authored by Leonardo Krambeck's avatar Leonardo Krambeck
Browse files

arruma incrementa/decrementa/remove/consulta atual

parent 2fcb2567
Branches
No related tags found
No related merge requests found
......@@ -201,72 +201,55 @@ int pertence_lista(int chave, t_lista *l)
return 1;
}
/*
Para poder retornar o ponteiro de atual, foi necessário
alterar o tipo do retorno de void para t_nodo*.
*/
t_nodo* inicializa_atual_inicio(t_lista *l)
int inicializa_atual_inicio(t_lista *l)
{
if (lista_vazia(l))
return NULL;
return 0;
l->atual = l->ini->prox;
return l->atual;
return 1;
}
/*
Para poder retornar o ponteiro de atual, foi necessário
alterar o tipo do retorno de void para t_nodo*.
*/
t_nodo* inicializa_atual_fim(t_lista *l)
int inicializa_atual_fim(t_lista *l)
{
if (lista_vazia(l))
return NULL;
return 0;
l->atual = l->fim->prev;
return l->atual;
return 1;
}
/*
Para poder retornar o ponteiro de atual, foi necessário
alterar o tipo do retorno de void para t_nodo*.
*/
t_nodo* incrementa_atual(t_lista *l)
void incrementa_atual(t_lista *l)
{
if (lista_vazia(l) || l->atual == NULL)
return NULL;
return;
if (l->atual->prox == l->fim)
return NULL;
return;
l->atual = l->atual->prox;
return l->atual;
}
/*
Para poder retornar o ponteiro de atual, foi necessário
alterar o tipo do retorno de void para t_nodo*.
*/
t_nodo* decrementa_atual(t_lista *l)
void decrementa_atual(t_lista *l)
{
if (lista_vazia(l) || l->atual == NULL)
return NULL;
return;
if (l->atual->prev == l->ini)
return NULL;
return;
l->atual = l->atual->prev;
return l->atual;
}
int consulta_item_atual(int *item, t_nodo *atual)
int consulta_item_atual(int *item, t_lista *atual)
{
if (atual == NULL)
if (atual->atual == NULL)
return 0;
if (atual->atual == atual->ini || atual->atual == atual->fim)
return 0;
*item = atual->chave;
*item = atual->atual->chave;
return 1;
}
......@@ -275,14 +258,13 @@ int remove_item_atual(int *item, t_lista *l)
if (l->atual == NULL)
return 0;
if (l->atual == l->ini || l->atual == l->fim)
return 0;
t_nodo *p = l->atual;
p->prev->prox = p->prox;
p->prox->prev = p->prev;
if (p->prox->prox == NULL)
l->atual = p->prev;
else
l->atual = p->prox;
*item = p->chave;
......
......@@ -93,33 +93,33 @@ int pertence_lista(int chave, t_lista *l);
Inicializa o ponteiro atual para o primeiro elemento da lista.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
*/
t_nodo* inicializa_atual_inicio(t_lista *l);
int inicializa_atual_inicio(t_lista *l);
/*
Inicializa o ponteiro atual para o ultimo elemento da lista.
Retorna 1 se a operação foi bem sucedida e zero caso contrário.
*/
t_nodo* inicializa_atual_fim(t_lista *l);
int inicializa_atual_fim(t_lista *l);
/*
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.
*/
t_nodo* incrementa_atual(t_lista *l);
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.
*/
t_nodo* decrementa_atual(t_lista *l);
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_nodo *atual);
int consulta_item_atual(int *item, t_lista *atual);
/*
Remove o elemento apontado por atual da lista l e o retorna em *item.
......
......@@ -21,7 +21,6 @@ int main ()
{
t_lista l;
int item;
t_nodo* atual;
inicializa_lista(&l);
insere_ordenado_lista(7, &l);
......@@ -30,18 +29,23 @@ int main ()
insere_ordenado_lista(3, &l);
insere_ordenado_lista(2, &l);
imprime (&l);
atual = inicializa_atual_inicio(&l);
atual = incrementa_atual(&l);
atual = incrementa_atual(&l);
atual = incrementa_atual(&l);
atual = incrementa_atual(&l);
inicializa_atual_inicio(&l);
incrementa_atual(&l);
incrementa_atual(&l);
incrementa_atual(&l);
incrementa_atual(&l);
remove_item_atual(&item,&l);
printf("%d\n",item);
imprime (&l);
atual = decrementa_atual(&l);
atual = incrementa_atual(&l);
consulta_item_atual (&item, atual);
remove_item_atual(&item,&l);
printf("%d\n",item);
imprime (&l);
destroi_lista (&l);
return 0;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment