#include "lista_est_seq.h"

struct lista{
	int no[MAX];
	int Fim;
};

Lista cria_lista()
{
	Lista *lst;

	lst = (Lista) malloc(sizeof(struct lista));

	if(lst != NULL)
		lst->Fim = 0;
	return lst;
}

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

int lista_cheia(Lista lst)
{
	if(lst->Fim == MAX)
		return 1;
	else
		return 0;
}

int insere_elem(Lista lst, int elem)
{
	if(lst == NULL || lista_cheia(lst))
		return 0;

	lst->no[lst->Fim] = elem;
	lst->Fim++;
	return 1;
}

int remove_elem(Lista lst, int elem)
{
	if(lst == NULL || lista_vazia(lst))
		return 0;

	int i, aux = 0;
	/* Percorrimento até achar o elem ou final de lista */
	while(aux < lst->Fim && lst->no[aux] != elem)
		aux++;

	if(aux == lst->Fim) /* Final de lista */
		return 0;

	/* Deslocament a esq. do sucessor até o final da lista */
	for(i = aux+1;i < lst->Fim;i++)
		lst->no[i-1] = lst->no[i];

	lst->Fim--;
	return 1;
}

