2017-10-12 2 views
-2

chaque nœud a trois données et un pointeur, lors de l'impression que le nœud actuel est affiché.ne fonctionne pas imprimer liste liée, nœud multidata

package lista.enlazada1; 
import java.util.Scanner; 

public class ListaEnlazada1 { 

public String marca; 
public String modelo; 
public int kilometraje; 
public ListaEnlazada1 nodosiguiente; 


public static void main(String[] args) { 
/* enter the number of nodes to be created */ 
Scanner leer= new Scanner(System.in); 
System.out.println("Digite la cantidad de nodos a ingresar)"); 
int n,contador=0; 
n=leer.nextInt(); 

/* the three data of the node is entered */ 
for (int i =1; i <= n; i++){ 
    ListaEnlazada1 nodo = new ListaEnlazada1(); 
    System.out.print("ingrese la marca "); 
     nodo.marca=leer.next(); 
     System.out.print("ingrese el modelo "); 
     nodo.modelo=leer.next(); 
     System.out.print("ingrese el kilometraje "); 
     nodo.kilometraje=leer.nextInt(); 

/* the node is created */ 

if(contador==0){ 
nodo.nodosiguiente = null; 
contador ++; 
} else { 
nodo.nodosiguiente = nodo; 
contador ++; 
}  

/* nodes are printed */ 
for (i =1; i <= n; i++){ 
System.out.println("marca " +nodo.marca+ "\n"); 
    System.out.println("modelo " +nodo.modelo+ "\n"); 
    System.out.println("kilometraje " +nodo.kilometraje+ "\n"); 
    System.out.println("apuntador " +nodo.nodosiguiente + "\n");  

} 

} 

} 

} 

comme variable autoincremental est créée, par exemple la variable est appelé noeud, alors il est incrémenté et appelé nœud1.

Je dois créer une variable auto-incrémentale pour pouvoir imprimer tous les nœuds.

+0

Votre code tel que formaté est très difficile à lire. S'il vous plaît envisager d'éditer votre message et de fixer votre style d'indentation afin qu'il soit uniforme et cohérent. J'évite généralement d'utiliser des tabulations pour indenter (le logiciel du site ne joue souvent pas bien avec les onglets) et indentent chaque bloc de code 4 espaces. –

Répondre

0

Je fixe un tas de choses dans votre code:

1: Vous aviez une boucle imbriquée; J'ai réassemblé cela à 2 pour les boucles: une pour lire les données des nouveaux nœuds, et une autre pour imprimer les données. 2: Lors de l'utilisation de listes liées, vous devez utiliser une liste auxiliaire, en conservant l'en-tête pour réutiliser la liste. 3: Dans l'impression pour boucle, terminé un cycle, vous devez obtenir le noeud suivant.

Ici, il est:

package lista.enlazada1; 
import java.util.Scanner; 

public class ListaEnlazada1 { 

    public String marca; 
    public String modelo; 
    public int kilometraje; 
    public ListaEnlazada1 nodosiguiente; 


    public static void main(String[] args) { 
     /* enter the number of nodes to be created */ 
     Scanner leer= new Scanner(System.in); 
     System.out.println("Digite la cantidad de nodos a ingresar)"); 
     int n,contador=0; 
     n=leer.nextInt(); 

     // Create a node to keep the header, and an auxiliar 
     // to traverse the list 
     ListaEnlazada1 cab = null, aux = null; 

     /* the three data of the node is entered */ 
     for (int i =1; i <= n; i++){ 
      ListaEnlazada1 nodo = new ListaEnlazada1(); 
      System.out.print("ingrese la marca "); 
      nodo.marca=leer.next(); 
      System.out.print("ingrese el modelo "); 
      nodo.modelo=leer.next(); 
      System.out.print("ingrese el kilometraje "); 
      nodo.kilometraje=leer.nextInt(); 

      /* the node is created */ 

      if(contador==0) 
       cab = aux = nodo; 
      else { 
       aux.nodosiguiente = nodo; 
       aux = aux.nodosiguiente; 
      } 
      contador++; 
     } 

     /* nodes are printed */ 
     for (int i =1; i <= n; i++){ 
     // When using "println", automatically jumps a line 
     // after printing, so there's no need to write "\n" 
     // unless you want to jump a line twice 
      System.out.println("marca " +cab.marca); 
      System.out.println("modelo " +cab.modelo); 
      System.out.println("kilometraje " +cab.kilometraje); 
      System.out.println("apuntador " +cab.nodosiguiente + "\n"); 
      cab = cab.nodosiguiente; // Here we get the next node 
     } 
    } 
} 

Comme dit dans les commentaires, il est une très bonne pratique de garder votre code bien échancré pour le rendre facile à lire. Bonne chance!