void ListaEnc<T>::eliminaDoInicio() { if (listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* saiu = cabeca; cabeca = saiu->getProximo(); tamanho--; delete saiu; }
void ListaCirc<T>::eliminaDoInicio() { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* saiu = this->cabeca->getProximo(); this->cabeca->setProximo(saiu->getProximo()); this->tamanho--; delete saiu; }
T ListaDupla<T>::mostra(int pos) { if (listaVazia()) { throw ExcecaoListaVazia(); } ElementoDuplo<T>* mostra = cabeca; for (int i = 0; i < tamanho - 1; i++) { mostra = mostra->getProximo(); } return mostra->getInfo(); }
T ListaCirc<T>::mostra(int pos) { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* atual = this->cabeca->getProximo(); for (int i = 0; i < pos; i++) { atual = atual->getProximo(); } return atual->getInfo(); }
void ListaDupla<T>::eliminaDoInicioDuplo() { if (listaVazia()) { throw ExcecaoListaVazia(); } ElementoDuplo<T>* saiu = cabeca; cabeca = saiu->getProximo(); cabeca->setAnterior(0); tamanho--; delete saiu; }
bool Lista<T>::contem(T dado) { if (listaVazia()) { throw ExcecaoListaVazia(); } for (int i = 0; i <= ultimo; i++) { if (igual(dado, lista[i])) { return true; } } return false; }
T* ListaEnc<T>::posicaoMem(const T& dado) const { if (listaVazia()) { throw ExcecaoListaVazia(); } int posicao = posicao(dado); Elemento<T>* atual = cabeca; for (int i = 0; i < posicao; i++) { atual = atual->getProximo(); } return atual->getInfo(); }
int Lista<T>::posicao(T dado) { if (listaVazia()) { throw ExcecaoListaVazia(); } for (int i = 0; i <= ultimo; i++) { if (igual(dado, lista[i])) { return i; } } throw ExcecaoDadoNaoEncontrado(); }
T ListaEnc<T>::retiraDoInicio() { if (listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* saiu = cabeca; T volta = saiu->getInfo(); cabeca = saiu->getProximo(); tamanho--; delete saiu; return volta; }
T* ListaCirc<T>::posicaoMem(const T& dado) const { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } int posicao = this->posicao(dado); Elemento<T>* atual = this->cabeca->getProximo(); for (int i = 1; i < posicao; i++) { atual = atual->getProximo(); } T volta = atual->getInfo(); T* retorno = &volta; return retorno; }
int ListaCirc<T>::posicao(const T& dado) const { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* atual = this->cabeca->getProximo(); for (int i = 0; i < this->tamanho; i++) { if (dado == atual->getInfo()) { return i; } atual = atual->getProximo(); } throw ExcecaoDadoNaoEncontrado(); }
bool ListaCirc<T>::contem(const T& dado) { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* atual = this->cabeca->getProximo(); for (int i = 0; i < this->tamanho; i++) { if (ListaEnc<T>::igual(dado, atual->getInfo())) { return true; } atual = atual->getProximo(); } return false; }
bool ListaDupla<T>::contemDuplo(const T& dado) { if (listaVazia()) { throw ExcecaoListaVazia(); } ElementoDuplo<T>* atual = cabeca; for (int i = 0; i < tamanho; i++) { if (igual(dado, atual->getInfo())) { return true; } atual = atual->getProximo(); } return false; }
int ListaDupla<T>::posicaoDuplo(const T& dado) const { if (listaVazia()) { throw ExcecaoListaVazia(); } ElementoDuplo<T>* atual = cabeca; for (int i = 0; i < tamanho; i++) { if (dado == atual->getInfo()) { return i; } atual = atual->getProximo(); } throw ExcecaoDadoNaoEncontrado(); }
T Lista<T>::retiraDaPosicao(int posicao) { if (listaVazia()) { throw ExcecaoListaVazia(); } if (posicaoInvalida(posicao)) { throw ExcecaoPosicao(); } ultimo--; T dado = lista[posicao]; for (int i = posicao; i <= ultimo; i++) { lista[posicao] = lista[posicao + 1]; } return dado; }
T FilaEnc<T>::retira() { if (filaVazia()) { throw ExcecaoListaVazia(); } Elemento<T>* sai = this->cabeca; T volta = sai->getInfo(); this->cabeca = sai->getProximo(); if(this->tamanho == 1) { fim = 0; } this->tamanho--; delete sai; return volta; }
T FilaEnc<T>::primeiro() { if (filaVazia()) { throw ExcecaoListaVazia(); } return this->cabeca->getInfo(); }
T ListaCirc<T>::retiraEspecifico(const T& dado) { if (ListaEnc<T>::listaVazia()) { throw ExcecaoListaVazia(); } return retiraDaPosicao(posicao(dado) + 1); }
T Lista<T>::retiraEspecifico(T dado) { if(listaVazia()) { throw ExcecaoListaVazia(); } return retiraDaPosicao(posicao(dado)); }
T ListaDupla<T>::retiraEspecificoDuplo(const T& dado) { if (listaVazia()) { throw ExcecaoListaVazia(); } return this->retiraDaPosicaoDuplo(posicaoDuplo(dado) + 1); }
T FilaEnc<T>::ultimo() { if (filaVazia()) { throw ExcecaoListaVazia(); } return fim->getInfo(); }