Salve, mi sto esercitando sulle liste in java, ho fatto vari screenshot sulla classe "Test","Nodo" e "Lista per farvi vedere come ho ragionato.
invece, nella classe "Lista" dovevo mettere un attributo di tipo Nodo Head
il problema sta nella classe "Lista", 3 metodi ho chiamati:
1°: metodo "concatenazione" che devo concatenare la lista L2 passata dal parametro alla fine della lista corrente.
2°: metodo "modificare" deve modificare tutti gli elementi pari e duplicando tutti dispari, però deve mantenere lo stesso ordine. Faccio un esempio:
L=6-->1-->3-->4-->5
allora il risultato di L è=1-->1-->3-->3-->5-->5
3°: il metodo "ricerca" deve restituire la lista delle posizioni in cui è presente nella lista L. faccio un esempio:
L=1-->15-->1-->9-->8-->1 l'utente vuole ricercare <1>
mi deve dare: L=1-->3-->6
Scrivo tutte tre classe:
Classe Nodo:
Classe Lista:
Classe Test:
Spero che sono stato più chiaro possibile evitando qualsiasi malintesi.
Grazie per la vostra attenzione :D
invece, nella classe "Lista" dovevo mettere un attributo di tipo Nodo Head
il problema sta nella classe "Lista", 3 metodi ho chiamati:
1°: metodo "concatenazione" che devo concatenare la lista L2 passata dal parametro alla fine della lista corrente.
2°: metodo "modificare" deve modificare tutti gli elementi pari e duplicando tutti dispari, però deve mantenere lo stesso ordine. Faccio un esempio:
L=6-->1-->3-->4-->5
allora il risultato di L è=1-->1-->3-->3-->5-->5
3°: il metodo "ricerca" deve restituire la lista delle posizioni in cui è presente nella lista L. faccio un esempio:
L=1-->15-->1-->9-->8-->1 l'utente vuole ricercare <1>
mi deve dare: L=1-->3-->6
Java:
public void modificare(Nodo L) {
L=head;
int disparo=0;
while(L.getLink()!=null) {
if(L.getElemento()/2==1) {
L.setElemento(disparo);
L.getLink().getLink(); //riferisce al prossimo nodo
L.setElemento(disparo);
}
L=L.getLink(); //Scorimento
}
}
Java:
public int ricerca(int ricerca) {
Nodo p=head;
int i=0;
while(p.getLink()!=null) { //Scorri la lista
if(p.getElemento()==ricerca) {
System.out.print(i++);
}
p=p.getLink(); //scorimento
i++;
}
return i++;
}
Java:
public void concatenazione(Lista L,Lista L2) {
Nodo p=head;
while(p.getLink()!=null) {
p=p.setLink(p);
p=p.getLink();
}
}
Classe Nodo:
Java:
package pag_8;
public class Nodo {
private int elemento;
private Nodo link;
public Nodo(int elemento,Nodo link) {
this.elemento=elemento;
this.link=link;
}
public Nodo() {
elemento=0;
link=null;
}
public void setElemento(int elemento) {
this.elemento=elemento;
}
public void setLink(Nodo link) {
this.link=link;
}
public int getElemento() {
return elemento;
}
public Nodo getLink() {
return link;
}
}
Classe Lista:
Java:
package pag_8;
public class Lista {
private Nodo head;
public Lista(Nodo head) {
this.head=head;
}
public void setHead(Nodo head) {
this.head=head;
}
public Nodo getHead() {
return head;
}
public void inserimentoInTesta(Nodo L) {
L.setLink(head); // <L> si riferiscie a <head>
head=L; //Cosi <L> diventa il primo nuovo nodo
}
public void inserimentoInCoda(Nodo L) {
Nodo p=head; //riferisco per scorrere la lista
while (p.getLink()!=null){ //Scorri la lista
p=p.getLink(); //Scorimento
}
p.setLink(L); //<L> diventa il nuovo ultimo nodo
}
public void stampaLista() {
if(head!=null) {
Nodo p=head;
System.out.print(p.getElemento()+"-->");
while(p.getLink()!=null) {
p=p.getLink();
System.out.print(p.getElemento()+"-->");
}
System.out.println("null");
}
}
public int restituireMinimo() {
int min;
Nodo p=head;
min=p.getElemento();
while(p.getLink()!=null) {
if(p.getElemento()<min) {
min=p.getElemento();
}
p=p.getLink(); //Scorimento
}
return min;
}
public void modificare(Nodo L) {
L=head;
int disparo=0;
while(L.getLink()!=null) {
if(L.getElemento()/2==1) {
L.setElemento(disparo);
L.getLink().getLink(); //riferisce al prossimo nodo
L.setElemento(disparo);
}
L=L.getLink(); //Scorimento
}
}
public int ricerca(int ricerca) {
Nodo p=head;
int i=0;
while(p.getLink()!=null) { //Scorri la lista
if(p.getElemento()==ricerca) {
System.out.print(i++);
}
p=p.getLink(); //scorimento
i++;
}
return i++;
}
public void concatenazione(Lista L,Lista L2) { //Ho ricominciato tante volte che alla fine non mi vengono in menete come risolvere
Nodo p=head;
while(p.getLink()!=null) {
p=p.setLink(p);
p=p.getLink();
}
}
}
Classe Test:
Java:
package pag_8;
import java.util.Scanner;
public class Test {
public static void main(String [] args) {
Scanner in= new Scanner (System.in);
int ricerca;
Nodo n1= new Nodo(1,null);
Nodo n2= new Nodo(10,null);
Lista L=new Lista (n1);
Lista L2=new Lista (n2);
System.out.println("1° Lista");
L.inserimentoInTesta(new Nodo(6,null));
L.inserimentoInCoda(new Nodo(3,null));
L.inserimentoInCoda(new Nodo(4,null));
L.inserimentoInCoda(new Nodo(5,null));
L.stampaLista();
System.out.println("2° Lista");
L2.inserimentoInCoda(new Nodo(23,null));
L2.inserimentoInCoda(new Nodo(10,null));
L2.inserimentoInCoda(new Nodo(15,null));
L2.stampaLista();
System.out.println(L.restituireMinimo());
L.concatenazione(L,L2); //Problema
L.modificare(new Nodo(9,null)); //Problema
L.stampaLista();
System.out.println("Inserisci un numero di tipo intero da ricercare nella lista");
ricerca=in.nextInt();
L.ricerca(ricerca); //Problema
L.stampaLista();
}
}
Spero che sono stato più chiaro possibile evitando qualsiasi malintesi.
Grazie per la vostra attenzione :D
Allegati
Ultima modifica: