2017-10-24 9 views
0

リストのノードに入ると、最後のノードが最初のノードになり、最初のノードが2番目のノードになるようにコードを変更します。リストにリンクされた最後のノードを最初にリストする

package nodos; 
import java.util.Scanner; 
/** 
* 
* @author x2010s 
*/ 
public class Nodos { 
public String nombre; 

public Nodos nodosiguiente; 
public Nodos nodosanterior; 
/** 
* @param args the command line arguments 
*/ 
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 data of the node is entered */ 
    for (int i =1; i <= n; i++){ 
     Nodos nodo = new Nodos(); 
     System.out.print("ingrese la nombre "); 
     nodo.nombre=leer.next(); 

     /* the node is created */ 
     if(contador==0){ 
      nodo.nodosiguiente = null; 
      contador ++; 
     } else { 
      nodo.nodosiguiente = nodo; 
      contador ++; 
     }  

     /* place the last created node first */ 
     if (contador == n){ 
      nodo.nodosiguiente=nodo; 
     } 
     nodo.nodosanterior = null; 
     for (i =1; i<contador; i++){ 
      nodo.nodosanterior=nodo; 
      nodo.nodosiguiente=null; 
     } 

     /* place the last created node first */ 
     for (i =1; i <= n; i++){ 
      System.out.println("nombre " +nodo.nombre+ "\n"); 
      System.out.println("apuntador " +nodo.nodosiguiente + "\n");  
     } 
     } 
    } 
    } 

私は3つのノードの量を入力すると、それはそれを3回印刷したノードのみを印刷したときに、唯一、データたら、私に尋ねます。

+1

ネストされたループで同じループ変数を使用しないでください。 – azurefrog

答えて

0

内側ループが同じ変数を使用し、その値が外側ループの1回の完全な反復の後の条件に違反するので、あなたの外側ループは1回の反復後に終了します。

あなたは彼らがあなたのケースでネストされている、特にときforループ範囲内で異なるローカル変数を使用する必要があります: -

for (int j = 1; j < contador; j++){ 
    nodo.nodosanterior=nodo; 
    nodo.nodosiguiente=null; 
} 

for (int k = 1; k <= n; k++){ 
    System.out.println("nombre " +nodo.nombre); 
    System.out.println("apuntador " +nodo.nodosiguiente);  
} 
関連する問題