修改代码,以便在进入列表的节点时,最后一个节点成为第一个节点,第一个节点成为第二个节点。
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个节点的数量时,只询问我一次数据,当它打印出唯一的节点时,它会打印三次。
答案 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);
}