Pessoal, continuando... disponibilizo os meus métodos tamanho, imprimir, remover e inserir numa lista duplamente encadeada.
public int tamanho(){ //esse metodo vai retornar a qtd de elementos da lista
Usuario temp = primeiro;
int totalElementos = 0;
//vai percorrer e incrementar a variavel totalElementos
while(temp != null){
temp = temp.getProx();
totalElementos++;
}
return totalElementos;
} //fim do metodo total
public void imprimir() { //esse metodo vai imprimir os elementos da lista
//variavel
Usuario temp = primeiro; //crio a variavel
//percorro a lista
while (temp != null) { //Enqto a temp for != null
temp.imprimir(); //imprima
temp = temp.getProx(); //temp receba o prox da fila
}//fim do while
} //fim do metodo
public void remove(int matricula) { //este metodo vai remover um elemento numa lista duplamente encadeada
if (primeiro != null) { //se a lista não estiver vazia
//se for remover o primeiro
if (primeiro.getMatricula() == matricula) {
this.primeiro = this.primeiro.getProx();
} else {
Usuario temp = primeiro.getProx();
temp.setAnt(primeiro);
//percorre a lista
while (temp != null && temp.getMatricula() != matricula) {
temp = temp.getProx();
}
//se temp for diferente de null é pq encontrou mat =
if (temp != null) {
temp.getAnt().setProx(temp.getProx());
temp.getProx().setAnt(temp.getAnt());
} //fim do if
} //fim do else
} //fim do if
} //fim do metodo remova
public void inserir(int pos, Usuario novo){
Usuario temp = primeiro;
int posicao = 0;
int tamanho = tamanho(); // metodo que retorna o tamanho da lista
if(temp == null){
novo.setAnt(null);
novo.setProx(null);
primeiro = novo;
} else if (pos > -1 && pos <= tamanho) {
while (temp.getProx() != null && pos != posicao) { //temp.getProx() != null pq temp nao pode ser null
posicao++; //incrementa a posição
temp = temp.getProx();
} //fim do while
if (pos == 0) { //inserir na primeira posição
novo.setProx(temp);
novo.setAnt(null);
temp.setAnt(novo);
primeiro = novo;
} else if (pos < tamanho) { //inseri em qualquer posição
novo.setProx(temp);
novo.setAnt(temp.getAnt());
temp.getAnt().setProx(novo);
temp.setAnt(novo);
} else { //inseri na ultima posição
novo.setAnt(temp);
novo.setProx(null);
temp.setProx(novo);
}
} else {
System.out.println("Posição invalida!");
}
} //final do metodo inserir
Esta é uma página pessoal, criada inicialmente para armazenar os códigos-fontes dos programas Java desenvolvidos durante o Curso de BSI, mas agora, armazenará soluções de exercícios dos meus estudos extra acadêmicos. A ideia é permitir que estudantes iniciantes na programação Java continuem encontrando neste espaço um meio de pesquisa e estudo, portanto, serão alternativas de soluções para exercícios básicos. Buscarei disponibilizar os códigos de forma didáticos e sempre que possível comentados.
AGRADECIMENTO...
Pessoal, Gostaria de pedir desculpas aqueles que deixam perguntas/comentários/elogios/críticas e ainda não foram respondidos.
Aproveito a oportunidade para informar a todos que devido a correria do dia a dia não conclui o curso de BSI, por isso meus conhecimentos são limitados rsrsrs...
Ainda não retirei o blog do ar porque tem ajudado a diversos estudantes, principalmente os iniciantes.
As vezes, quando o trabalho me permite, ainda arrisco tentar resolver algumas questões rs... mas para não deixar esse blog parar no tempo, o ESTUDANTE que quiser enviar a resolução de alguma questão (código próprio) para o meu e-mail, terei o prazer de posta-la neste blog e será mantido a autoria.
Desde já agradeço a todos pelas visitas e desejo bons estudos.
Thiago Campos
(srthiago@hotmail.com)
domingo, 17 de março de 2013
quinta-feira, 7 de março de 2013
Método inserir(int pos, objeto novo) numa lista encadeada
Durante a criação desse método, muitas dúvidas sugiram e mesmo pesquisando na internet, não encontrei nenhuma solução simples que me ajudasse efetivamente, alguns amigos me tiraram dúvidas, e até me sugeriram novas rotas para chegar ao resultado. Deu certo, valeu João e Flávio.
Ah! Antes que digam que os meus métodos são simples, lembro a todos que sou estudante e ele é voltado para outros estudantes que buscaram justamente soluções simples na internet e só encontraram complexas. Daqui para frente fica mais dificil postar o código inteiro, disponibilizarei métodos e quando for possível, todos o código.
Este método abaixo permite o Usuário inserir um objeto em qualquer posição da lista encadeada. O códio foi escrito em Java e espero que ajude a outros estudantes durante sua caminhada.
public void inserir(int pos, Objeto novo) {
//obj
Objeto temp = primeiro; //vai receber a lista
Objeto anterior = null;
//obj
Objeto temp = primeiro; //vai receber a lista
Objeto anterior = null;
//var
int posicao = 0;
int tamanho = tamanho();
int posicao = 0;
int tamanho = tamanho();
//Verifica se a lista está vazia
if (temp == null) {
primeiro = novo;
}
if (temp == null) {
primeiro = novo;
}
//caso a lista não esteja vazia
if (pos <= tamanho && pos > -1) { //vai garantir as margens
while (posicao != pos) { //Percorre a lista
anterior = temp; //guarda o anterior
temp = temp.getProx(); //vai atribuir o proximo a temp
posicao++; //incrementa a posição
}
//valido apenas para a primeira posição
if (posicao == 0) { //se for para colocar na primeira posicao
novo.setProx(temp);
primeiro = novo;
System.out.println("\nPOSIÇÃO 0");
} else {
//valido para qualquer outra posição
novo.setProx(temp); //o obj novo aponta para o atual
anterior.setProx(novo); //o obj anterior aponta para novo
System.out.println("\nPOSIÇÃO " + pos);
} //fim do elsE
} else {System.out.println("\nPOSIÇÃO INVÁLIDA!");} //fim do else
} //fim do metodo inserir
Assinar:
Postagens (Atom)