2017-10-12 19 views
-2

各ノードには3つのデータとポインタがあり、現在のノードのみが表示されます。dont work print linked list、node 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");  

} 

} 

} 

} 

autoincremental変数が作成されるように、例えば変数が呼び出されるノードは、それがインクリメントされ、ノード1と呼ばれます。

すべてのノードを印刷できるようにするには、自動インクリメント変数を作成する必要があります。

+0

フォーマットされたコードは読みにくいです。あなたの投稿を編集し、一貫性と一貫性があるように字下げスタイルを修正することを検討してください。私は通常、インデント用のタブを使用しないでください(サイトソフトウェアはタブでうまくいきません)。各コードブロックを4スペースインデントします。 –

答えて

0

私はあなたのコードで物事の束を固定:

1:あなたは、ループの入れ子になっていました。新しいノードのデータを読むノードとデータを出力するノードの2つのループを再構築しました。

2:リンクされたリストを使用する場合は、リストを再度使用するようにヘッダーを維持して、補助リストを使用する必要があります。

3:forループの印刷では、サイクルを完了して、次のノードを取得する必要があります。

はここにある:

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 
     } 
    } 
} 

としては、コメントでは、読み、それを容易にするだけでなくインデントあなたのコードを維持するために非常に良い方法であると述べました。がんばろう!

関連する問題