T ListaEnc<T>::retiraEspecifico(const T& dado) {
  if (listaVazia())
    throw ERROLISTAVAZIA;

  int pos = posicao(dado);
  return retiraDaPosicao(pos);
}
示例#2
0
T ListaEnc<T>::retiraEspecifico(const T& dado) {
	if (listaVazia()) {
		throw std::runtime_error("Lista Vazia");
	} else {
		return retiraDaPosicao(posicao(dado));
	}
}
示例#3
0
文件: main.c 项目: pedropaulovc/UFSC
/**
 NOME DA FUNÇÃO: retirarContato
 ALUNOS: Pedro Paulo e Felipe dos Santos
 PROPÓSITO:
	É responsável por gerenciar as operações de remoção de contatos e delegá-las apropriadamente à lista e
	informar se tudo aconteceu de maneira correta.

 PARÂMETROS:
 nenhum

 VALOR DE RETORNO:
 nenhum

 CHAMA: exibeMenuSecundario, retira, retiraDoInicio, retiraDaPosicao, exibirMensagemErro

 CHAMADA DE: main
 */
void retirarContato() {
	int opcao, posicao, resultado;

	exibeMenuSecundario("Remover do");
	scanf("%d", &opcao);

	switch (opcao) {
	case 0:
		resultado = retira();
		break;
	case 1:
		resultado = retiraDoInicio();
		break;
	case 2:
		puts("Forneça a posição a ser removida");
		scanf("%d", &posicao);
		resultado = retiraDaPosicao(posicao);
		break;
	default:
		puts("Opção Inválida");
		break;
	}

	if (resultado != 0)
		exibirMensagemErro(resultado);
}
示例#4
0
 //comentário
 T retiraEspecifico(T dado)
 {
     if(listaVazia())
       throw 20;
     int pos = posicao(dado);
     if (pos < 0)
       throw 20;
     return retiraDaPosicao(pos);
 }
示例#5
0
	T retiraEspecifico(const T& dado){
		Elemento<T> *aux = head;

		for (int j = 0; j < size; j++){
			if(*aux->info== dado)
				return retiraDaPosicao(j);
			aux = aux->_next;
		}
		return;
	}
	/** Retira um elemento da Lista, se este objeto existir dentro da Lista.
	* @see listaVazia()
	* @param dado A posição do dado a ser retirado.
	* @exception ExcecaoErroPosicao Exceção que indica que o dado enviado via argumento não existe dentro dessa Lista, logo não pode ser removido.
	* @exception ExcecaoListaVazia Exceção que indica que um dado não pode ser retirado, pois a lsita já está vazia.
	* @return o dado do tipo T que foi retirado.
	*/
	T retiraEspecifico(T dado) {
	    int posicao;
		if (!listaVazia()) {
			posicao = this->posicao(dado);
			if (posicao < 0) {
				throw ExcecaoErroPosicao;
			} else {
				return retiraDaPosicao(posicao);
			}
		} else {
			throw ExcecaoListaVazia;
		}
	}
	/*
     * @brief Metodo para retirar um dado especifico da Lista
     * @details Verifica se a lista não está vazia, caso esteja retorna um throw.
     * Cria uma variavel auxiliar de inteiro chamada 'pos' e chama o metedo 'posicao' 
     * para atribuir a posição no array 'dados[]' do elemento 'dado'.
     * Verifica se a variavel 'pos' tem um valor valido, ou seja maior que zero, caso
     * isso se confirme retorna o metodo 'retiraDaPosicao' e passa como parametro a variavel 'pos'
     */
	T retiraEspecifico(T dado) {
	    int pos;
	    if (listaVazia()) {
	        throw(ERROLISTAVAZIA);
	    } else {
	        pos = posicao(dado);
	        if (pos < 0) {
	            throw(ERROPOSICAO);
	        } else {
	            return (retiraDaPosicao(pos));
	        }
	    }
	}
示例#8
0
	/** Retira o último elemento da Lista.
	* Este método retira o último elemento da Lista e decrementa o ponteiro da Lista.
	* @see listaVazia()
	* @exception ExcecaoListaVazia Exceção que indica que um dado não pode ser retirado, pois a lista já está vazia.
	* @return o dado do tipo T que foi retirado do final da Lista.
	*/
	T retira() {
	    return retiraDaPosicao(ultimo);
	}
示例#9
0
 //comentário
 T retiraDoInicio()
 {
     if(listaVazia())
       throw 20;
     return retiraDaPosicao(0);
 }
示例#10
0
 //comentário
 T retira()
 {
     if(listaVazia())
       throw 20;
     return retiraDaPosicao(ultimo);
 }
示例#11
0
文件: lista.c 项目: pedropaulovc/UFSC
/**
NOME DA FUNÇÃO: retira
ALUNOS: Pedro Paulo e Felipe dos Santos
PROPÓSITO:
	retira, se possível, um contato da última posição da lista. Ao final retorna o sucesso ou não da
	operação.

PARÂMETROS:
nenhum

VALOR DE RETORNO:
nome           tipo  descrição
---------------------------------------------------------------------
--             int   0 em caso de sucesso, código de erro em caso de problema

*/
int retira() {
	return retiraDaPosicao(aLista.ultimo);
}
示例#12
0
/** Retira um objeto específico da Lista Encadeada.
* Este método retira o primeiro objeto da Lista Encadeada que tem o mesmo valor do dado fornecido.
* @see retiraDaPosicao(int pos)
* @see posicao(int pos)
* @return o objeto do tipo T que foi retirado da Lista. Retorna NULL caso esse objeto não exista.
*/
    T retiraEspecifico(const T& dado) {
        int pos = posicao(dado);
        return retiraDaPosicao(pos + 1);
    }
示例#13
0
T ListaCirc<T>::retira() {
    return retiraDaPosicao(this->tamanho);
}
示例#14
0
int main(void){
    ListaEnc *lista;
    TipoInfo *info, *aux, *info2;

    int escolha = -1;
    char valor1[30];
    char valor2[30];
    int  valor3 = -1000;
    int pos = -1;
    int flag = 0;

     while ((escolha = menu())!= 0){
        switch (escolha){
        case 1:
            flag++;
            lista = criaLista(); break;
        case 2:
            valor3 = estah_vazia(lista);
            system("clear");

            if(valor3 == 1)
                printf("A lista esta vazia\n");
            else
                printf("A lista nao esta vazia\n");
            printf("\nObs: Quando a lista encadeada esta vazia, adicionar registro no fim\ne no inicio corresponde a uma mesma operacao.\n");
            break;
        case 3:
            system("clear");
            printf("Informe o nome do usuario: ");
            scanf("%s", valor1);

            printf("Informe o curso do usuario: ");
            scanf("%s", valor2);

            printf("Informe a fase em que se encontra o usuario: ");
            scanf("%d", &valor3);

            system("clear");
            info = criaInfo(valor1, valor2, valor3);
            adicionaNoInicio(lista, info); break;
        case 4:
            system("clear");
            printf("Informe o nome do usuario: ");
            scanf("%s", valor1);

            printf("Informe o curso do usuario: ");
            scanf("%s", valor2);

            printf("Informe a fase em que se encontra o usuario: ");
            scanf("%d", &valor3);

            system("clear");
            if(lista->tamanho > 1){
                imprime_lista(lista);

                do{
                    printf("Podera inserir registros entre o 1o e o ultimo registro inclusive");
                    printf("Informe a posicao que desejas inserir este registro: ");
                    scanf("%d", &pos); }while(pos <= 0 || pos >= lista->tamanho);

                info = criaInfo(valor1, valor2, valor3);
                adicionaNaPosicao(lista, info, pos);
            }else if(lista->tamanho <= 1){
                info = criaInfo(valor1, valor2, valor3);
                adicionaNoInicio(lista, info);
            }

            break;
        case 5:
            adicionaEmOrdemNaPosicao(lista); break;
        case 6:
            system("clear");
            printf("Informe o nome do usuario: ");
            scanf("%s", valor1);

            printf("Informe o curso do usuario: ");
            scanf("%s", valor2);

            printf("Informe a fase em que se encontra o usuario: ");
            scanf("%d", &valor3);

            system("clear");
            info = criaInfo(valor1, valor2, valor3);
            adicionaNoFim(lista, info); break;
        case 7:
            system("clear");
            printf("Informe o nome do usuario: ");
            scanf("%s", valor1);

            printf("Informe o curso do usuario: ");
            scanf("%s", valor2);

            printf("Informe a fase em que se encontra o usuario: ");
            scanf("%d", &valor3);

            system("clear");
            info2 = criaInfo(valor1, valor2, valor3);
            pos = posicaoDoElemento(lista, info2);

            if(pos == -1)
                printf("Nao existe este registro\n");
            else
                printf("O registro existe e esta na posicao %d\n", pos);
            destroiInfo(info2);
            break;
        case 8:
            aux = retiraDoInicio(lista);
            system("clear");
            printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break;
        case 9:
            system("clear");
            if(lista->tamanho==0)
                printf("Nao ha registros para serem retirados\n");
            else if(lista->tamanho==1){
                aux = retiraDoInicio(lista);
                system("clear");
                printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break;
            }else if(lista->tamanho==2){
                imprime_lista(lista);

                do{
                    printf("Podera inserir registros entre o 1o e o ultimo registro inclusive\n");
                    printf("Informe a posicao do registro que desejas remover: ");
                    scanf("%d", &pos); }while(pos <= 0 || pos >= lista->tamanho);

                if(pos == 0){
                    aux = retiraDoInicio(lista);
                    system("clear");
                    printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase);
                }else{
                    aux = retiraDoFim(lista);
                    system("clear");
                    printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase);
                    }
            }else if(lista->tamanho>2)
                imprime_lista(lista);

                do{
                    printf("Podera inserir registros entre o 1o e o ultimo registro inclusive\n");
                    printf("Informe a posicao do registro que desejas remover: ");
                    scanf("%d", &pos); }while(pos <= 0 || pos >= lista->tamanho);

                aux = retiraDaPosicao(lista, pos);
                printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break;
        case 10:
            aux = retiraDoFim(lista);
            system("clear");
            printf("Registro retirado\n\nNome de usuario: %s\nCurso do usuario: %s\nFase em que o usuario se encontra: %d", aux->nome, aux->curso, aux->fase); break;
        case 11:
            imprime_lista(lista); break;
        case 12:
            if(flag == 1){
                flag--;
                destroi_lista(lista);
            }else
                printf("Nao ha lista para destruir\n");
        }
    }
    if(flag == 1){
        destroi_lista(lista);
    }

    return 0;
}
示例#15
0
	T retira(){
		return retiraDaPosicao(size - 1);
	}
示例#16
0
/**
 *Método que retira o último elemento da Lista.
 *
 * Para isso ele utiliza o método retiraDaPosicao, levando a última posição como parametro. Para maiores informações vide retiraDaPosicao().
 *
 * @return InfoLista = ponteiro para um objeto da classe InfoLista.
 */
InfoLista* CabecaDeLista::retira() {
	return retiraDaPosicao(tamanho);
}
示例#17
0
T Lista<T>::retira() {
	return retiraDaPosicao(ultimo);
}
示例#18
0
const ElementoGeometrico* ListaElementosGeometricos::retira(){
	return retiraDaPosicao(size-1);
}
示例#19
0
T Lista<T>::retiraDoInicio() {
	return retiraDaPosicao(0);
}
示例#20
0
T ListaEnc<T>::retira() {
	return retiraDaPosicao(size-1);
}
示例#21
0
T ListaCirc<T>::retiraEspecifico(const T& dado) {
    if (ListaEnc<T>::listaVazia()) {
        throw ExcecaoListaVazia();
    }
  return retiraDaPosicao(posicao(dado) + 1);
}
示例#22
0
	/** Retira o primeiro elemento da Lista.
	* Este método retira o primeiro elemento da Lista e traz todos os dados uma posição para frente.
	* @see listaVazia()
	* @exception ExcecaoListaVazia Exceção que indica que um dado não pode ser retirado, pois a lsita já está vazia.
	* @return o dado do tipo T que foi retirado do início da Lista.
	*/
	T retiraDoInicio() {
	    return retiraDaPosicao(0);
	}
示例#23
0
	/** Retira um elemento da Lista, se este objeto existir dentro da Lista.
	* @see listaVazia()
	* @param dado A posição do dado a ser retirado.
	* @exception ExcecaoErroPosicao Exceção que indica que o dado enviado via argumento não existe dentro dessa Lista, logo não pode ser removido.
	* @exception ExcecaoListaVazia Exceção que indica que um dado não pode ser retirado, pois a lsita já está vazia.
	* @return o dado do tipo T que foi retirado.
	*/
	T retiraEspecifico(T dado) {
		int indice = posicao(dado);
	    return retiraDaPosicao(indice);
	}
/** Retira o último elemento da Lista.
* Este método retira o último elemento da lista circular simples.
* @see retiraDaPosicao(int pos)
* @return o dado do tipo T que foi retirado do final da Lista.
*/
    T retira() {
        return retiraDaPosicao(this->retornaTamanho());
    }
示例#25
0
	/**
	 * @brief      Retira o dado que for igual ao dado de entrada
	 *
	 * @param[in]  dado  Dado a ser retirado
	 *
	 * @return     O dado retirado
	 */
	T retiraEspecifico(const T& dado) {
		return retiraDaPosicao(posicao(dado));
	}
示例#26
0
T Lista<T>::retiraEspecifico(T dado) {
	if(listaVazia()) {
		throw ExcecaoListaVazia();
	}
	return retiraDaPosicao(posicao(dado));
}
示例#27
0
/**
 * Método que retira um objeto específico da classe ElementoDeLista.
 *
 *  Para isso ele utiliza o método retiraDaPosicao, levando a posição do dado recebido como parametro. Para maiores informações vide retiraDaPosicao().
 *
 * @param elemento = objeto da classe ElementoDeLista que vai ser retirado da lista.
 *
 @return InfoLista = ponteiro para um objeto da classe InfoLista.
 */
InfoLista* CabecaDeLista::retiraEspecifico(ElementoDeLista *elemento) {
	return retiraDaPosicao(posicao(elemento));
}
示例#28
0
    /*
        Retira um dado do fim da lista e elimina elemento.
    */
	T retira() {
	    if (listaVazia())
	        throw(20);
		return retiraDaPosicao(size-1);
	}
示例#29
0
    /*!
        \return Retorna e retira um dado específico do tipo T (apaga elemento).
        \param dado eh o endereço do dado que será retirado do tipo T.
    */
	T retiraEspecifico(const T& dado) {
		int pos;
		if (!((pos = posicao(dado))+1))
			throw(20);
		return retiraDaPosicao(pos);
	}
示例#30
0
T ListaEnc<T>::retira() {
	return retiraDaPosicao(tamanho);
}