#include "1_Lista_din_encad_cab.h"

struct no{
	int info;
	struct no * prox;
};

Lista cria_lista()
{
	/* Aloca o no cabeçalho */
	Lista cab = (Lista) malloc(sizeof(struct no));

	if(cab != NULL)
	{
		/* Coloca a lista em estado de vazia */
		cab->prox = NULL;
		cab->info = 0;
	}
	return cab; /* Se falhar, retorna NULL */
}

int lista_vazia(Lista lst)
{
	if(lst->prox == NULL)
		return 1;
	return 0;
}

int insere_ord(Lista *lst, int elem)
{
	N = (Lista) malloc(sizeof(struct no));
	if(N == NULL)
		return 0;

	N->info = elem;
	Lista aux = *lst; /* Aponta pro cabeçalho */

	while(aux->prox != NULL && aux->prox->info < elem)
		aux = aux->prox;

	N->prox = aux->prox; /* Insere o novo nó na lista */
	aux->prox = N;
	lst->info++; /* Opcional: incrementa a qtde de nós na lista */
}

int remove_ord(Lista *lst, int elem)
{
	if(lista_vazia(*lst))
		return 0;

	Lista aux = *lst;
	while(aux->prox != NULL && aux->prox->info != elem)
		aux = aux->prox;

	Lista aux2 = aux->prox; /* Aponta nó a ser removido */
	aux->prox = aux2->prox;
	free(aux2);
	return 1;
}
