2017-10-19 41 views
-1

通過鍵盤手動創建列表我有以下缺點,變量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");  

} 

} 

} 

} 

我需要更改代碼,以便變量每次我進入時間更改名稱,例如第一次迭代節點1,第二次迭代節點2,等我曾嘗試沒有奏效。運動必須在不鏈表庫

回答

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