Tenho um exercício sobre pilhas. Devo criar um aplicativo com menu, adicionar notas, excluir notas. As notas serão divididas em duas pilhas uma para meninos outra para meninas. Devo ainda formar uma terceira pilha, com as notas intercaladas, ou seja, uma nota de meninos, depois uma nota de meninas, depois meninos de novo e assim sucessivamente até que ambas estejam nulas. Depois devo imprimir, as três pilhas. Consegui os métodos de inclusão, exclusão e impressão. Mas, para juntar as pilhas, fiz apenas um método que recebe de uma pilha e depois de outra pilha. Mas os valores são seguidos, todas as notas de uma pilha e depois todas as notas da outra pilha. Alguém pode me ajudar? Essa é minha classe com os métodos.
package Pilhas;
public class Pilha {
private No_pilha topo1 = null;
private No_pilha topo2 = null;
private No_pilha topo = null;
J_Leitura in = new J_Leitura();//classe que lê minhas entradas de dados via teclado
void push (char sexo){//método de inclusão
No_pilha temp = new No_pilha();//crio um novo objeto do tipo no_pilha com sexo, nota e prox
if (temp != null){
System.out.println ("Digite nota: ");//recebo os dados
temp.nota = in.Ler_float();
temp.sexo = sexo;
if (sexo == 'M'){
temp.prox = topo1;
topo1 = temp;
}
else {
temp.prox = topo2;
topo2 = temp;
}
}
else {
System.out.println ("Não é possível adicionar");
in.Pause(2);
}
}
void pop (char sexo){//método de exclusão
if (topo1 != null && sexo == 'M'){
System.out.println ("Confirmada exclusão da nota");
topo1 = topo1.prox;
in.Pause(2);
return;
}
else {
System.out.println ("Pilha vazia");
}
if (topo2 != null && sexo == 'F'){
System.out.println ("Confirmada exclusão da nota");
topo2 = topo2.prox;
in.Pause(2);
return;
}
else {
System.out.println ("Pilha vazia");
}
}
private void concatenar (){//método para juntar as pilhas em uma só
topo = null;
conc (topo1);
conc (topo2);
}
private void conc (No_pilha topo){
if (topo == null){
return;
}
while (topo != null){
No_pilha temp = new No_pilha();
if (temp != null){
temp.nota = topo.nota;
temp.sexo = topo.sexo;
temp.prox = this.topo;
this.topo = temp;
topo = topo.prox;
}
}
}
void imprimir (){//imprimindo as pilhas
concatenar ();
if (topo == null){
System.out.println ("Pilhas vazias");
return;
}
if (topo1 != null){
System.out.println ("Notas dos meninos");
imp (topo1);
}
if (topo2 != null){
System.out.println ("Notas das meninas");
imp (topo2);
}
System.out.println ("Notas Gerais");
imp (topo);
}
private void imp (No_pilha topo){
while (topo != null){
System.out.println ("\n" + topo.nota + " ' " + topo.sexo + "'");
topo = topo.prox;
in.Pause(2);
}
}
}
Agradeço aos que puderem me dar uma ajuda.