Estou precisando do código ou de uma ajuda em lista ordenada por um inteiro, é um projeto da faculdade e os livros são muito confusos. Meu professor quer que seja implementado, só que ele disse que por recursão é mais facíl.
Como vc está cursando E.D., provavelmente você deverá implementar utilizando algum algorítmo de ordenação (bubble sort, quick sort, etc…). Um bom livro com certeza vai ajudar.
Eu consegui fazer a lista mas me deu um erro na hora da exclusão. Quando eu excluo o último tudo certo, mas ai quando eu excluo o primeiro ele deixa de listar o último que ficou. Alguém saberia me dizer o que foi que deu errado ?
public void excluir( int crm )
{
Medico atual = this.pri;
Medico ant = atual;
//Testa se o elemento a ser excluido da lista é o primeiro
if( prim() && pri.getCrm() == crm )
ant = atual = pri = null;
while( atual.prox != null )
{
if( pri.getCrm() == crm )
pri = atual = ant = pri.prox;
else
{
ant = atual;
atual = atual.prox;
if( atual.prox == null )
{
ant.prox = null;
break;
}
if( atual.getCrm() == crm )
{
ant.prox = atual.prox;
atual = atual.prox;
}
}
}
}
private int info;
private No prox;//próximo nó
//construtor
public No(int info){
this.info = info;
prox = null;
}
//construtor q recebe outro nó
public No(No prox){
this.prox = prox;
}
public void setProx(No prox){
this.prox = prox;
}
public No getProx(){
return prox;
}
public void setInfo(int info){
this.info = info;
}
public int getInfo(){
return info;
}
//verifica o prox deste nó existe
public boolean existeProx(){
if(this.getProx()!=null)
return true;
return false;
}
}[/code]
[code]public class Lista {
private No init;//primeiro nó da lista
//construtor, inicializa o init como null
public Lista(){
init = null;
}
//contrutor, inicializa o init com o valor recebido
public Lista(int info){
init = new No(info);
}
//calcula o tamanho da lista
public int tamanho(){
No aux = init;
int cont = 1;
while(aux.existeProx()){
cont++;
aux = aux.getProx();
}
return cont;
}
//insere um nó no final da lista
public boolean insereNo(int info){
No aux = new No(init);
while(aux.existeProx()){
aux = aux.getProx();
if(aux.getInfo()==info)
return false;
}
aux.setProx(new No(info));
return true;
}
//busca e remove o nó do valor informado
public void removeNo(int info){
if(init.getInfo()==info){
init = init.getProx();
return;
}
No aux = init;
while(aux.existeProx()){
if(aux.getProx().getInfo() == info){
aux.setProx(aux.getProx().getProx());
break;
}
aux = aux.getProx();
}
}
//imprime em console os valores guardados na lista
public void imprime(){
No aux = new No(init);
while(aux.existeProx()){
System.out.print(aux.getProx().getInfo() + " ");
aux = aux.getProx();
}
System.out.println("");
}
//retorna uma String com os valores guardados na lista
public StringBuffer texto(){
StringBuffer texto = new StringBuffer();
No aux = new No(init);
while(aux.existeProx()){
texto.append(aux.getProx().getInfo() + " ");
aux = aux.getProx();
}
return texto;
}
public static void main(String args[]){
Lista lista = new Lista(10);
}
}
[/code]
É uma lista de números inteiros, mas fazendo algumas modificações, pode armazendar qualquer coisa.