Estrutura de dados em c
III. A construção do protótipo de um elemento da lista
Para definir um elemento da lista será usado o tipo struct.
O elemento da lista conterá um campo dado e um ponteiro seguinte.
O ponteiro seguinte deve ser do mesmo tipo que o elemento, caso contrário ele não poderá apontar para o elemento.
O ponteiro "seguinte" permitirá o acesso ao próximo elemento.
typedef struct ElementoLista { char *dado; struct ElementoLista *seguinte; }Elemento;
Para controlar a lista, é melhor salvar certos elementos: * o primeiro elemento, * o último elemento, * o número de elementos.
Para fazê-lo, outra estrutura será utilizada (isso não é obrigatório, variáveis podem ser utilizadas).
Veja a composição:
typedef struct ListaDetectada { Elemento *início; Elemento *fim; int tamanho; }Liste;
O ponteiro de início conterá o endereço do primeiro elemento da lista.
O ponteiro de fim conterá o endereço do último elemento da lista.
A variável tamanho conterá o número de elementos.
Seja qual for a posição na lista, os ponteiros de início e fim sempre apontam, respectivamente, para o primeiro e último elemento.
O campo tamanho conterá o número de elementos da lista, independentemente da operação efetuada na lista.
-------------------------------------------------
IV. Operações nas listas circulares
-------------------------------------------------
A. Inicialização
Protótipo da função:
void inicialização (Lista *lista);
Esta operação deve ser feita antes de qualquer outra operação na lista.
Ela inicializa o ponteiro de início e o ponteiro de fim com o ponteiro NULL, e o tamanho, com o valor 0.
A função
void inicialização (Lista *lista){