打印java列表
所以我这里有一个小问题,我试着从右到左和从左到右打印一个列表,这个代码可以从右到左精细打印,但从左到右不,请提供任何帮助 我的代码:打印java列表,java,list,printing,Java,List,Printing,所以我这里有一个小问题,我试着从右到左和从左到右打印一个列表,这个代码可以从右到左精细打印,但从左到右不,请提供任何帮助 我的代码: package listas; import java.util.Scanner; class nodo { int info; nodo ligader; nodo ligaizq; } class Listas { static nodo F = null; static nodo Q = null;
package listas;
import java.util.Scanner;
class nodo {
int info;
nodo ligader;
nodo ligaizq;
}
class Listas {
static nodo F = null;
static nodo Q = null;
static nodo P = null;
static nodo x = null;
static nodo T = null;
public static void main(String args[]) {
Scanner y = new Scanner(System.in);
int m = 0;
do {
try {
System.out.println("Menu");
System.out.println("1. Crea Inicio");
System.out.println("2. Insertar antes de referencia ");
System.out.println("3. Mostrar");
System.out.println("4. Salir");
System.out.println("Opcion:");
m = Integer.valueOf(y.next());
} catch (NumberFormatException e) {
System.out.print("");
}
try {
switch (m) {
case 1:
creaininodo();
System.out.println("Termina Programa que Crea Inicio de Lista");
break;
case 2:
InsertarAntes();
break;
case 3:
Mostrar();
break;
case 4:
System.exit(0);
break;
default:
System.out.println("La opcion que escogio no se encuentra,favor de escoger otra.");
break;
}
} catch (NumberFormatException e) {
System.out.println("Datos introducidos erroneos.");
}
} while (m != 4);
}
public static void creaininodo() {
Scanner y = new Scanner(System.in);
int opc = 1;
int dato;
if (P == null) {
P = new nodo();
System.out.println("Dame Dato: ");
dato = Integer.valueOf(y.next());
P.info = dato;
P.ligaizq = null;
P.ligader = null;
F = P;
}
do {
Q = new nodo();
System.out.println("Dame Dato: ");
dato = Integer.valueOf(y.next());
Q.info = dato;
Q.ligader = P;
Q.ligaizq = null;
P = Q;
System.out.println("Otro nodo 1(SI) 2 (NO)");
opc = Integer.valueOf(y.next());
} while (opc != 2);
}
public static void InsertarAntes() {
Scanner sc = new Scanner(System.in);
int ref;
int dato;
System.out.println("Inserte un valor de referencia: ");
ref = Integer.valueOf(sc.next());
Q = P;
boolean band = false;
while ((Q.info != ref) && (band == false)) {
if (Q.ligader != null) {
T=Q;
Q = Q.ligader;
} else {
band = true;
}
}
if (band == true) {
System.out.println("El elemento no fue enconntrado");
} else {
x = new nodo();
System.out.println("Inserte el nuevo valor: ");
dato = sc.nextInt();
x.info = dato;
x.ligader = Q;
T.ligader=x;
Q.ligaizq = x;
x.ligaizq = T;
if (P == Q) {
P = x;
}
}
}
public static void Mostrar() {
System.out.println("La Lista Creada es: ");
System.out.println("Campo Informacion de derecha a izquierda:");
for (nodo i = P; i != null; i = i.ligader) {
System.out.print(" -" + i.info + "- ");
}
System.out.println(" ");
System.out.println("Campo Informacion de izquierda a derecha:");
for (nodo i = F; i != null; i = i.ligader) {
System.out.print(" -" + i.info + "- ");
}
System.out.println(" ");
}
}
基本上,这个程序的工作原理是在案例1和案例2中为列表提供一些数字(在案例2中,您只是选择了一个您之前在案例2中添加的参考号,因此您将该数字插入到参考号之前的列表中),而在案例3中,问题是代码从右向左打印,而不是从左向右打印
例如,我们选择案例1并添加3个数字3、6和5,然后选择案例3并打印:
La Lista Creada es:
德雷查·伊兹基尔达信息中心:(从右到左(精细))
-3--6--5-伊兹基尔达·德雷查信息中心:(从左到右只有一个号码) -5-
对不起,我的英语不好,我感谢任何帮助,谢谢 好吧,我不完全确定利加德和利加伊兹克是什么意思。但是假设您想要实现一个双链接列表,我希望它们指示列表中的上一个和下一个节点 您需要在输入法
creaininodo()
中更改以下内容:
然后修改从左到右的输出方法,以实际使用到上一个节点的链接进行遍历:
for (nodo i = F; i != null; i = i.ligaizq) { // using i.ligaizq!
System.out.print(" -" + i.info + "- ");
}
如果此答案帮助您解决了问题,请将其标记为已接受,以便结束问题。
for (nodo i = F; i != null; i = i.ligaizq) { // using i.ligaizq!
System.out.print(" -" + i.info + "- ");
}