Listas ligadas socorro

2 respostas
YoungT

dada duas turmas A e B implementar baseando-se em listas ligadas as seguintes accoes:inserir estudantes saber qtos estudantes de cada sexo tem cada turma mudar de turma um determinado estudante e ordenar uma turma pela idade…
eu ja fiz a classe estudande a inserção d estudantes e a quantidade de homens e mulheres + agora tou com duvidas em como mudar um estudante para outra turma e como ordenar a turma pela idade, o meu codigo esta assim

public class Estudante {

String nome;

int idade;

char sexo;

double notas[];

Estudante proximo;
public Estudante(){}

public void setDados(String nom, int id, char s, double[]not) {

	this.nome = nom;
	this.idade = id;
	this.sexo = s;
	this.notas = not;
}

/*
   getters e os seterrs
*/

}

public class Turmas {

public static void main(String[] args) {

Estudante turmaA, turmaB;

turmaA=null;

turmaB=null;

int op;
do{
		//menu
		   System.out.println("1-Addicionar um Estudante a Turma A");
		   System.out.println("2-Addicionar um Estudante a Turma B");
		   System.out.println("3-Numero de Estudantes Masculinos e femeninos turma A");
		   System.out.println("4-Numero de Estudantes Masculinos e femeninos turma B");

		op=Le.umInt();
		switch(op){
		case 1:turmaA=adicionar(turmaA);break;
		case 2:turmaB=adicionar(turmaB);break;
		case 3:sexo(turmaA);
	    case 4:sexo(turmaB);
		case 0:break;
		}

	}while(op!=0);
}
public static Estudante adicionar(Estudante tur){
	Estudante temp=new Estudante();
	double[]not=new double[5];
	System.out.println("Introduza o nome do Estudante");
	String nom=Le.umaString();
	System.out.println("Introduza a idade do Estudante");
	int id=Le.umInt();
	System.out.println("Introduza o sexo do Estudante");
	char s=Le.umChar();
	for(int i=0; i<5; i++){
		System.out.println("Introduza a "+(i+1)+"nota");
		not[i]=Le.umDouble();
	}

	temp.setDados(nom, id, s, not);
	temp.proximo=tur;
	tur=temp;
	return tur;

}

public static void sexo(Estudante tur){
	Estudante ajuda=tur;
	int i=0, j=0;
	while(ajuda!=null)
	{
		if (ajuda.sexo=='f')
			i++;
		if(ajuda.sexo=='m')
			j++;
    	ajuda=ajuda.proximo;
	}
	System.out.println("sexo Masculino:"+j);
	System.out.println("sexo Femenino:"+i);
}

}

2 Respostas

M4N03L50N

YoungT, para mudar um estudante de turma, você precisará seguir os seguintes passos:

  1. Perguntar ao usuario qual o nome do estudante deve ser trocado;
  2. Perguntar ao usuario qual lista o estudante está;
  3. Percorrer a lista, testando se o nome do Estudante bate com o que está procurando;
  4. Quando encontrar o Estudante buscado, alterar o atributo ‘proximo’ do Estudante ANTERIOR ao Estudante encontrado. Esse atributo receberá o valor ‘proximo’ do Estudante encontrado. Com isso, você consegue retirar o Estudante da lista;
  5. Insira o Estudante na outra lista (com o método adicionar(Estudante)).

Obs.: os segredo do passo 4, para você ter a referência ao Estudante ANTERIOR ao que você está passando, é percorrer a lista utilizando dois objetos: um será o nó atual, e outro será o nó anterior. Assim, quando o nó atual for o cara procurado, você já tem em mãos o cara ANTERIOR.

Exemplo: dada a estrutura:

–| JOSE |------------| CARLOS |---------------| PAULO |–

Retirando o Carlos:

–| JOSE |–&nbsp;          | CARLOS |                /–| PAULO |–
                  |                                            |
                  |______________________|

Qualquer dúvida, estamos aí…

RealJavaMan

Não seria mais fácil utilizar turma como atributo da classe Estudante e usar uma única lista ligada?

Criado 10 de setembro de 2008
Ultima resposta 10 de set. de 2008
Respostas 2
Participantes 3