Eu programo em Java há algum tempo e resolvi aprender C++. Meu maior problema é que tento fazer as coisas em C++ da forma com que eu fazia em Java, e isso nem sempre é uma boa escolha.
Para treinar, estou criando uma lista encadeada em C++ (usando templates). Em um dado momento, fui criar o método remover, veja abaixo:
No início do código coloquei
#define null 0
Mais lá pro final, cheguei a esse impasse:
int getIndice(T alvo)
{
Elemento *atual;
atual = primeiro;
int i = 0;
while (atual != null)
{
if (atual->elem == alvo)
{
return i;
}
i++;
atual = atual->proximo;
}
return -1;
}
T removerInicio(T elemento)
{
int indice = getIndice(elemento);
if (indice == -1)
{
return null;
}
return removerInicio(indice);
}
T removerInicio(int indice)
{
if (ehVazia())
{
}
}
O problema é que em Java tudo é pointeiro, então no método removerInicio(T elemento), caso o índice do elemento fosse -1 (não existe), ele deveria retornar null. Isso em C++ não funciona, pois não necessariamente essa lista encadeada será de ponteiros.
Esse problema (ter uma lista encadeada tanto de ponteiros quanto de não-ponteiros) me deixou sem solução. Será que alguém teria alguma ideia para me ajudar a resolver esse impasse? Tipo o que retornar ou que modificações eu deveria fazer? Eu não gostaria de obrigar que minha lista só aceitasse ponteiros.
Question
renamed
Oi pessoal
Eu programo em Java há algum tempo e resolvi aprender C++. Meu maior problema é que tento fazer as coisas em C++ da forma com que eu fazia em Java, e isso nem sempre é uma boa escolha.
Para treinar, estou criando uma lista encadeada em C++ (usando templates). Em um dado momento, fui criar o método remover, veja abaixo:
No início do código coloquei
Mais lá pro final, cheguei a esse impasse:O problema é que em Java tudo é pointeiro, então no método removerInicio(T elemento), caso o índice do elemento fosse -1 (não existe), ele deveria retornar null. Isso em C++ não funciona, pois não necessariamente essa lista encadeada será de ponteiros.
Esse problema (ter uma lista encadeada tanto de ponteiros quanto de não-ponteiros) me deixou sem solução. Será que alguém teria alguma ideia para me ajudar a resolver esse impasse? Tipo o que retornar ou que modificações eu deveria fazer? Eu não gostaria de obrigar que minha lista só aceitasse ponteiros.
Muito obrigado.
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.