键盘输入的链表手册

时间:2017-10-19 02:59:14

标签: java linked-list

通过键盘手动创建列表时我有以下缺点,变量nodo只存储当前值。 ListaEnlazada1 nodo = new ListaEnlazada1();

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");    

}

}

}

}

我需要更改代码,以便每次进入for时变量都会更改名称,例如第一个迭代node1,第二个迭代node2等等。我没有尝试过什么工作。必须在没有链表库的情况下完成练习

1 个答案:

答案 0 :(得分:0)

要显示当前节点在系列中的位置,请考虑以下事项:

for(int i = 1; i <= n; i++) {
    System.out.println("----------");
    System.out.println("Ingrese los datos del nodo " + i);
    /* user input */
}

您可以考虑在输入所有节点后显示有关每个节点的信息,以便程序的输出更具可读性。由于您将每个节点存储在它之前的节点中,您可以尝试通过它们循环:

ListaEnlazada actual = primerNodo; // save the first node somewhere before user input
imprimirNodo(actual);
while((actual = actual.nodosiguiente) != null) {
    imprimirNodo(actual);
}

imprimirNodo(nodo)方法如下:

static void imprimirNodo(ListaEnlazada1 nodo) {
    System.out.println("----------");
    System.out.println("Marca: " + nodo.marca); // No need to break the line manually.
    System.out.println("Kilometraje: " + nodo.kilometraje);
    /* Note that printing nodo.nodosiguiente may lead to
    * unreadable output unless you override toString() */
    System.out.println("Apuntador: " + nodo.nodosiguiente);
}