/*
 * Esqueleto para a implementação de listas
 * simples.
 */

#include<stdio.h>
#include<stdlib.h>
#include "lista_simples.h"

/* Inicializa uma lista */
void cria(Lista *p_l){
  *p_l = NULL;
}

/* Verifica se a lista está vazia ou não */
int vazia(Lista *p_l){
  return (*p_l == NULL);
}

/* Insere um elemento no início da lista */
void insere_inicio(Lista *p_l, elem_t e){
  No_lista* n = malloc(sizeof(No_lista));
  n->v = e;
  n->prox = *p_l;
  *p_l = n;
}

/* Insere um elemento no final da lista */
void insere_fim(Lista *p_l, elem_t e){
}

/* Insere um elemento na lista de maneira ordenada.
   Retorna 0 caso o elemento já exista na lista. 
   Assume que a lista está ordenada */
int insere_ordenado(Lista *p_l, elem_t e){
  return 0;
}

/* Verifica se a lista está ordenada */
int ordenada(Lista *p_l){
  return 0;
}

/* Ordena a lista */
void ordena(Lista *p_l){
  return 0;
}

/* Remove o elemento que está no início da lista.
   Retorna 0 caso a lista esteja vazia */
int remove_inicio(Lista *p_l, elem_t *p_e){
  return 0;
}

/* Remove o elemento que está no final da lista.
   Retorna 0 caso a lista esteja vazia */
int remove_fim(Lista *p_l, elem_t *p_e){
  return 0;
}

/* Remove o nó de valor e.
   Retorna 0 caso este nó não tenha sido encontrado */
int remove_valor(Lista *p_l, elem_t e){
  return 0;
}

/* Inverte os elementos de uma lista */
void inverte(Lista *p_l){
}

/* Remove todos os nós da lista */
void libera(Lista *p_l){
}

/* Exibe o conteúdo da lista */
void exibe(Lista *p_l){
}