Итак, у меня есть небольшая проблема, я пытаюсь распечатать список справа налево и слева направо, этот код работает тонкой печатью справа налево, но слева направо нет, любая помощь пожалуйста ?Печать списка java
Мой код:
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 эс: Кампо-де-Informacion Derecha Izquierda: (право на левый (штраф)) -3- -6- -5-
Кампо-де-Informacion Izquierda Derecha: (слева направо только один номер) -5-
Извините за мой плохой английский, я ценю любую помощь , благодаря!
Если этот ответ помог вам решить вашу проблему, отметьте его как принятый, чтобы закрыть вопрос. –
Это сделало трюк, большое спасибо! – user3522262