#ifndef LISTA_SIMPLES_LIB_H #define LISTA_SIMPLES_LIB_H /** classe Lista_Simples_Lib: lista ligada *************** * @author: Gustavo Sverzut Barbieri */ #include class Lista_Simples_Lib { // Métodos Públicos: Podem ser acessados externamente public: /** * Construtores: chamado quando se da o new *@param elemento apontador para elemento de qualquer tipo */ Lista_Simples_Lib(void *elemento); Lista_Simples_Lib(); /** * Destrutor: Chamado quando se da o delete */ ~Lista_Simples_Lib(); /** * Add_Depois: adiciona 'elemento' na lista numa posição posterior à atual *@param elemento apontador para elemento de qualquer tipo */ void Add_Depois(void *elemento); /** * Remove: o elemento atual é retirado da lista a qual pertencia e é colocado em uma lista que só o contém. *@return apontador para a lista sem o elemento atual. */ Lista_Simples_Lib *Remove(); /** * Valor: retorna o elemento atual. Você deverá usar um 'cast' para o tipo original do elemento. *@return apontador para o elemento da posição atual da lista */ void *Valor(); /** * Muda_Valor: muda o elemento atual da lista *@param elemento elemento que irá ser colocado na posição atual da lista */ void Muda_Valor(void *elemento); /** * Acha_Ultimo: retorna o último elemento da lista *@return apontador para o último elemento da lista atual */ Lista_Simples_Lib *Acha_Ultimo(); /** * Proximo: retorna apontador para o próximo elemento da lista *@return apontador para próximo elemento da lista */ Lista_Simples_Lib *Proximo(); /** * Muda_Proximo: altera o apontador de próximo elemento para noh *@param noh apontador para outra lista ou nó de lista */ void Muda_Proximo(Lista_Simples_Lib *noh); /** * Limpa: limpa(apaga) toda a lista, ficando só o nó atual * OBS: Note que a LISTA e somente a LISTA será apagada. Os elementos anexados a ela deverão ser liberados pelo programador (caso tenha sido alocado). * DICA: Se você só usou elementos alocados na lista, use: * Lista_Simples_Lib *aux; * while (aux != NULL) { delete aux->Valor(); aux->Muda_Valor(NULL); aux = aux->Proximo(); } * lista->Limpa(); */ void Limpa(); /** * Junta_Depois: coloca uma COPIA de 'lista' logo após este nó e após da cópia de 'lista' coloca-se a restante da lista existente anteriormente. *@param lista será copiada e inserida entre 'this' e 'this->Proximo()'. Não é alterada. */ void Junta_Depois(Lista_Simples_Lib &lista); /** * Junta_Ultimo: coloca uma COPIA de 'lista' logo após o último elemento desta lista *@param lista será copiada e inserida após this->Acha_Ultimo() */ void Junta_Ultimo(Lista_Simples_Lib &lista); /** * Copia: retorna cópia(alocada dinamicamente, não se esqueça de liberar após o uso) da lista atual *@return a cópia da lista atual. (Memória dinâmica, liberar após o uso!) */ Lista_Simples_Lib *Copia(); /** * Contador: retorna o número de elementos na lista *@return númerode elementos na lista */ int Contador(); protected: /** * Aterra_Ponteiro: altera os apontador de próximo para NULL */ void Aterra_Ponteiro(); private: void *elemento; Lista_Simples_Lib *proximo; }; #endif