Example #1
0
 /*!
 \param dado um elemento a ser retirado da lista
 \return as informações do dado retirado da lista
 \sa retiraDuplo(), retiraDoInicioDuplo(), eliminaDoInicioDuplo(),
 retiraDaPosicaoDuplo()
 */
 T retiraEspecificoDuplo(const T& dado) {
     try {
     return retiraDaPosicaoDuplo(posicaoDuplo(dado));
     } catch (std::exception& e) {
         throw e;
     }
 }
    /*
     * @brief Metodo retiraEspecificoDuplo
     * @details Metodo para retirar um elemento especifico da Lista
     * @param O parametro 'dado' é o elemento especifico a ser retirado da lista
     * @return Retorna o dado a ser retirado
     */
	T retiraEspecificoDuplo(const T& dado) {
        if (listaVazia()) {
            throw("Lista Vazia");
        } else {
            return (retiraDaPosicaoDuplo(posicaoDuplo(dado)));
        }
	}
		/*!
		 *  \brief Funcao retiraEspecificoDuplo
		 *	\param dado passado por referencia e um tipo generico constante
		 *		que representa o dado que deve ser retirado da lista.
		 *	\return uma chamada para a funcao retiraDaPosicao.
		 *	\sa listaVazia(), posicaoDuplo(...), retiraDaPosicaoDuplo(...)
		 *
		 *  Se a lista nao estiver vazia, entao chama a funcao posicaoDuplo
		 *		para ter o local do dado passado como argumento e passa esse
		 *		local para a funcao retiraDaPosicaoDuplo que fara o processo
		 *		de retirada do dado.
		 */
		T retiraEspecificoDuplo(const T &dado) {
			if (listaVazia()) {
				throw "problema";
			} else {
				return retiraDaPosicaoDuplo(posicaoDuplo(dado));
			}
		}
 /** Verifica se determinado dado existe dentro da Lista Duplamente Encadeada.
 * Este método recebe um dado que será analisado para verificar se este dado está dentro da Lista.
 * @param dado O dado que será verificado a existência dentro da lista.
 * @see posicaoDuplo(const T& dado)
 * @return um boolean que indica se o dado está presente (true) ou não (false) dentro da lista.
 */
 virtual bool contemDuplo(const T& dado) {
     try {
         posicaoDuplo(dado);
         return true;
     } catch(std::exception& e) {
         return false;
     }
 }
Example #5
0
T* ListaDupla<T>::posicaoMemDuplo(const T& dado) const {
	 if (listaVazia()) {
        throw ExcecaoListaVazia();
    }
    int posicao = posicaoDuplo(dado);
    ElementoDuplo<T>* atual = cabeca;
    for (int i = 1; i < posicao; i++) {
        atual = atual->getProximo();
    }
    return atual->getInfo();
}
Example #6
0
	T retiraEspecificoDuplo(const T& dado) {
        //caso erro refazer este método
        return retiraDaPosicaoDuplo(posicaoDuplo(dado));
    }
Example #7
0
	/**
	 * @brief 		Retira um elemento que tenha um dado específico e retorna
	 * 				seu dado
	 *
	 * @details 	Utiliza o método retiraDaPosicaoDuplo() com paramêtro o método
	 * 				posicaoDuplo()
	 */
	T retiraEspecificoDuplo(const T& dado) {
		return retiraDaPosicaoDuplo(posicaoDuplo(dado));
	}
Example #8
0
T ListaDupla<T>::retiraEspecificoDuplo(const T& dado) {
	if (listaVazia()) {
		throw ExcecaoListaVazia();
	}
    return this->retiraDaPosicaoDuplo(posicaoDuplo(dado) + 1);
}
 /** Retira um objeto específico da Lista Duplamente Encadeada.
 * Este método retira o primeiro objeto da Lista Duplamente Encadeada que tem o mesmo valor do dado fornecido.
 * @see retiraDaPosicaoDuplo(int pos)
 * @see posicaoDuplo(int pos)
 * @return o objeto do tipo T que foi retirado da Lista.
 */
 virtual T retiraEspecificoDuplo(const T& dado) {
     int posicao = posicaoDuplo(dado);
     return retiraDaPosicaoDuplo(posicao);
 }