ibrahimovic26
12-01-2015, 15:14
Buon pomeriggio a tutti, sono nuovo di questo forum e da 2 anni studio C++ e Java.
Devo svolgere un esercizio riguardante gli alberi binari.
Praticamente ho: il numero principale e i puntatore di destra e sinistra (all'inizio settati a -1).
Ogni qual volta che inseriamo un numero( deve essere univoco) il puntatore deve cambiare valore per ( quindi es. da -1 a 1 e via dicendo).
Il mio unico problema è che non riesco a modificare il valore dei puntatori una volta che aggiungo un numero(e quindi il puntatore deve incrementare per indicare la posizione).
Da premettere che utilizziamo i Vector.
Potreste darmi una mano? Vi scrivo qui il mio progetto
Classe numeri:
public class Numeri {
private int punt_sx;
private int punt_dx;
private int num;
public Numeri() {
pushpunt_sx(-1);
pushpunt_dx(-1);
}
public void pushpunt_dx(int punt_dx){
this.punt_dx=punt_dx;
}
public void pushpunt_sx(int punt_sx){
this.punt_sx=punt_sx;
}
public void pushnum(){
Input i1=new Input();
System.out.println("Inserisci il numero: ");
num=i1.InputInt();
}
public int poppunt_dx(){
return punt_dx;
}
public int poppunt_sx(){
return punt_sx;
}
public int popnum(){
return num;
}
}
Classe del Vector:
public class vectorAlberi {
private Vector v;
public vectorAlberi() {
v=new Vector(1,1);
}
public void menu(){
Input i1=new Input();
int sc;
do{
System.out.println("-------------MENU-------------");
System.out.println("1) Inserisci nodo");
System.out.println("2) Ricerca nodo");
System.out.println("3) Visualizza Albero");
System.out.println("4) Ordina");
System.out.println("5) Esci");
sc=i1.InputInt();
switch(sc){
case 1:inserimento();break;
case 2:ricerca();break;
case 3:visualizza();break;
case 4:ordina(int punt_dx, int punt_sx, Numeri n1);break;
case 5:break;
}
}while(sc!=5);
}
public void inserimento(){
Numeri n1=new Numeri();
boolean ok=true;
Numeri aiuto;
do{
n1.pushnum();
ok=true;
for(int i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(n1.popnum()==(aiuto.popnum())){
System.out.println("Numero già presente!");
ok=false;
}
}
}while(!ok);
v.addElement(n1);
}
public void ricerca(){
Numeri aiuto;
int i, ricerc;
Input i1=new Input();
System.out.println("Inserisci il numero da ricercare: ");
ricerc=i1.InputInt();
if(v.size()==0)
System.out.println("Albero vuoto. Nessun numero presente!");
for(i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(aiuto.popnum()==ricerc){
System.out.println("Puntatore sinistro: "+aiuto.poppunt_sx()+"\nNumero: "+aiuto.popnum()+"\nPuntatore destro: "+aiuto.poppunt_dx());
}else{
System.out.println("Nessun numero presente corrispondenete alla ricerca!");
}
}
}
public void visualizza(){
int i;
Numeri a1;
for(i=0;i<v.size();i++){
a1=(Numeri)v.elementAt(i);
System.out.println("Puntatore sinistro: "+a1.poppunt_sx()+"\nNumero: "+a1.popnum()+"\nPuntatore destro: "+a1.poppunt_dx()+"\n");
}
}
(QUI INIZIA LA PARTE CHE NON SO FARE)
/* public void ordina(int punt_dx, int punt_sx, Numeri n1){
int i;
Numeri aiuto;
for(i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(aiuto.popnum()>(n1.popnum())){
punt_dx=i;
}else{
punt_sx=i;
}
}
}*/
}
Classe Main:
public class Main {
public static void main(String argv[]){
vectorAlberi n1=new vectorAlberi();
n1.menu();
}
}
Grazie mille in anticipo.
Devo svolgere un esercizio riguardante gli alberi binari.
Praticamente ho: il numero principale e i puntatore di destra e sinistra (all'inizio settati a -1).
Ogni qual volta che inseriamo un numero( deve essere univoco) il puntatore deve cambiare valore per ( quindi es. da -1 a 1 e via dicendo).
Il mio unico problema è che non riesco a modificare il valore dei puntatori una volta che aggiungo un numero(e quindi il puntatore deve incrementare per indicare la posizione).
Da premettere che utilizziamo i Vector.
Potreste darmi una mano? Vi scrivo qui il mio progetto
Classe numeri:
public class Numeri {
private int punt_sx;
private int punt_dx;
private int num;
public Numeri() {
pushpunt_sx(-1);
pushpunt_dx(-1);
}
public void pushpunt_dx(int punt_dx){
this.punt_dx=punt_dx;
}
public void pushpunt_sx(int punt_sx){
this.punt_sx=punt_sx;
}
public void pushnum(){
Input i1=new Input();
System.out.println("Inserisci il numero: ");
num=i1.InputInt();
}
public int poppunt_dx(){
return punt_dx;
}
public int poppunt_sx(){
return punt_sx;
}
public int popnum(){
return num;
}
}
Classe del Vector:
public class vectorAlberi {
private Vector v;
public vectorAlberi() {
v=new Vector(1,1);
}
public void menu(){
Input i1=new Input();
int sc;
do{
System.out.println("-------------MENU-------------");
System.out.println("1) Inserisci nodo");
System.out.println("2) Ricerca nodo");
System.out.println("3) Visualizza Albero");
System.out.println("4) Ordina");
System.out.println("5) Esci");
sc=i1.InputInt();
switch(sc){
case 1:inserimento();break;
case 2:ricerca();break;
case 3:visualizza();break;
case 4:ordina(int punt_dx, int punt_sx, Numeri n1);break;
case 5:break;
}
}while(sc!=5);
}
public void inserimento(){
Numeri n1=new Numeri();
boolean ok=true;
Numeri aiuto;
do{
n1.pushnum();
ok=true;
for(int i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(n1.popnum()==(aiuto.popnum())){
System.out.println("Numero già presente!");
ok=false;
}
}
}while(!ok);
v.addElement(n1);
}
public void ricerca(){
Numeri aiuto;
int i, ricerc;
Input i1=new Input();
System.out.println("Inserisci il numero da ricercare: ");
ricerc=i1.InputInt();
if(v.size()==0)
System.out.println("Albero vuoto. Nessun numero presente!");
for(i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(aiuto.popnum()==ricerc){
System.out.println("Puntatore sinistro: "+aiuto.poppunt_sx()+"\nNumero: "+aiuto.popnum()+"\nPuntatore destro: "+aiuto.poppunt_dx());
}else{
System.out.println("Nessun numero presente corrispondenete alla ricerca!");
}
}
}
public void visualizza(){
int i;
Numeri a1;
for(i=0;i<v.size();i++){
a1=(Numeri)v.elementAt(i);
System.out.println("Puntatore sinistro: "+a1.poppunt_sx()+"\nNumero: "+a1.popnum()+"\nPuntatore destro: "+a1.poppunt_dx()+"\n");
}
}
(QUI INIZIA LA PARTE CHE NON SO FARE)
/* public void ordina(int punt_dx, int punt_sx, Numeri n1){
int i;
Numeri aiuto;
for(i=0;i<v.size();i++){
aiuto=(Numeri)v.elementAt(i);
if(aiuto.popnum()>(n1.popnum())){
punt_dx=i;
}else{
punt_sx=i;
}
}
}*/
}
Classe Main:
public class Main {
public static void main(String argv[]){
vectorAlberi n1=new vectorAlberi();
n1.menu();
}
}
Grazie mille in anticipo.