列表链接的最后一个节点是第一个

时间:2017-10-24 01:17:22

标签: java linked-list nodes

修改代码,以便在进入列表的节点时,最后一个节点成为第一个节点,第一个节点成为第二个节点。

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个节点的数量时,只询问我一次数据,当它打印出唯一的节点时,它会打印三次。

1 个答案:

答案 0 :(得分:0)

根据我的理解,你的外部循环在一次迭代后退出,因为内部循环使用相同的变量,并且在外部循环完成一次迭代后其值违反条件。

您应该在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);    
}