ft_lstadd_back

Subject

Nome da função: ft_lstadd_back

Protótipo: void ft_lstadd_back(t_list **lst, t_list *new);

Parâmetros:

  • #1. Endereço do ponteiro para o primeiro link da lista.
  • #2. Endereço do ponteiro para o elemento a ser adicionado na lista.

Valor de retorno: Nenhuma.

Funções externas: Nenhuma.

Descrição: Adiciona o elemento ‘new’ para o final da lista.

Rascunho

A função pede para acharmos o último elemento da lista. Dessa forma, devemos ir avançando até encontrar o último. Se fizéssemos um main assim:

int main() {
  
  t_list    *l = lstnew(strdup("Otaku"));
  t_list    *n = lstnew(strdup("Fedido"));

  ft_lstadd_back(&l, n);
  return 0;
}

O resultado seria:

Criando as listas
‘next’ passa a valer o conteúdo de ‘new’

Código

void	ft_lstadd_back(t_list **lst, t_list *new)
{
	t_list	*last;

	if (lst) //se o endereço não for 0
	{
		if (*lst == NULL) //se não é nulo
			*lst = new; //adiciono o elemento 'new'
		else
		{
			last = ft_lstlast(*(lst)); //encontro o último
                        if (last != NULL) //se ele não for nulo
			    last->next = new; //o próximo é 'new'
		}
	}
}

Deixe um comentário