#ifndef _LISTA_H_ #define _LISTA_H_ #include "comum.h" /* Tipo abstrato Lista Circular: estrutura duplamente ligada e dinâmica. Sacrifica-se um elemento (nó-cabeça) a fim de otimizar os algoritmos. O ponteiro da lista aponta para o nó-cabeça. */ typedef struct lista { int info; /* informação */ struct lista *prox,*ant; /* ponteiros para os elementos próximo e anterior */ } Lista; /* Operações sobre Lista */ Lista *lisCria(); /* Cria lista vazia. */ void lisDestroi(Lista *l); /* Destrói lista. */ void lisInsere(Lista *l, int x); /* Insere elemento x no final da lista. */ int lisRemove(Lista *l); /* Remove elemento do início da lista. */ int lisRemoveElemento(Lista *l, int x); /* Remove elemento x da lista. */ Lista *lisBusca(Lista *l, int x); /* Retorna o ponteiro para o elemento x na lista ou NULL caso ele não exista. */ Lista *lisCopia(Lista *l); /* Retorna uma cópia da lista de entrada. */ Lista *lisConcatena(Lista *l1, Lista *l2); /* Concatena duas listas em uma terceira que é retornada. */ void lisInsereDepois(Lista *px, int y); /* Insere elemento y depois do elemento x apontado por px. */ void lisInsereAntes(Lista *px, int y); /* Insere elemento y antes do elemento x apontado por px. */ bool lisVazia(Lista *l); /* Retorna true se a lista estiver vazia e false no caso contrário. */ #endif