Eliminar elemento en cualquier lugar de una pila (Sin clase Stack).
Publicado por Camilo Fonseca (1 intervención) el 20/10/2015 01:54:32
Hola! estoy estancado con una tarea de pilas en java y quería saber si alguno puede colaborarme, tengo 2 clases, un constructor:
Y una clase que manipula y muestra los datos, llamada pila:
El problema esta justo en la parte de eliminar un dato en especifico, tengo el metodo para eliminar el primer dato, o la cima hablando de pilas, pero piden ahora eliminar uno que puede estar en cualquier posicion segun el codigo.
Si alguien puede orientarme seria genial, no puedo usar mas que este código. Lo que intente fue cambiar el orden segun el codigo y mandarlo a la cima, pero no lo logre...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Nodo {
int codigo;
String nombre;
double sueldo;
Nodo next;
public Nodo(int codigo, String nombre, double sueldo){
this.codigo = codigo;
this.nombre = nombre;
this.sueldo = sueldo;
this.next = null;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public Nodo getNext() {
return next;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public double getSueldo() {
return sueldo;
}
public void setSueldo(int sueldo) {
this.sueldo = sueldo;
}
public void setNext(Nodo next) {
this.next = next;
}
public String toString(){
String s=codigo+" "+nombre+" "+sueldo;
return s;
}
}
Y una clase que manipula y muestra los datos, llamada pila:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import java.util.Scanner;
public class Pila {
private Nodo cima;
private Nodo p;
public Pila(){
this.cima=null;
}
public Nodo getCima() {
return cima;
}
public void setCima(Nodo cima) {
this.cima = cima;
}
public static void main(String args[ ])throws Exception {
Scanner teclado=new Scanner(System.in);
String num;
Pila ps = new Pila();
int opc;
do {
System.out.println("\n"+"Menu principal:"+"\n");
System.out.println("1. Ingresar dato a la Pila");
System.out.println("2. Eliminar dato en la pila");
System.out.println("3. Eliminar dato especifico de la pila");
System.out.println("4. Imprimir datos de la pila");
System.out.println("5. Salir");
System.out.print("\n"+"Digite una Opción: ");
num = teclado.next();
opc=Integer.parseInt(num);
switch (opc) {
case 1:ps.apilar();
break;
case 2:try{ps.eliminar();}
catch (Exception e){
System.out.print("La pila esta vacia."+"\n");
}
break;
case 3:try{ps.eliminardato();}
catch (Exception e){
System.out.print("La pila esta vacia."+"\n");
}
break;
case 4:ps.imprimir_datos();
break;
case 5:System.exit(0);
break;
default:System.exit(0);
break;
}
}while(opc!=5);
}
void apilar() {
Scanner teclado=new Scanner(System.in);
int dato;
String aux;
double su;
System.out.print("\n"+"Digite codigo: ");
dato = Integer.parseInt(teclado.next());
System.out.print("Digite nombre: ");
aux = teclado.next();
System.out.print("Digite sueldo: ");
su = Double.parseDouble(teclado.next());
p = new Nodo(dato, aux, su);
p.setNext(this.cima);
this.cima = p;
}
void eliminar() {
int dato=cima.getCodigo();
String aux=cima.getNombre();
double su=cima.getSueldo();
this.cima=cima.getNext();
}
void eliminardato() {
Scanner teclado=new Scanner(System.in);
int dato_c;
System.out.print("\n"+"Digite el codigo del usuario a eliminar: ");
dato_c= Integer.parseInt(teclado.next());
if(dato_c==cima.getCodigo()){
eliminar();
System.out.print("\n"+"Los datos del usuario han sido eliminados."+"\n");
}
if(dato_c!=cima.getCodigo()){
System.out.print("\n"+"Los datos del usuario han sido eliminados."+"\n");
}
}
void imprimir_datos() {
String salida="";
Nodo q=this.cima;
while(q!=null){
salida=salida+q.toString()+"\n";
q=q.getNext();
}
System.out.print(salida);
}
}
El problema esta justo en la parte de eliminar un dato en especifico, tengo el metodo para eliminar el primer dato, o la cima hablando de pilas, pero piden ahora eliminar uno que puede estar en cualquier posicion segun el codigo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void eliminardato() {
Scanner teclado=new Scanner(System.in);
int dato_c;
System.out.print("\n"+"Digite el codigo del usuario a eliminar: ");
dato_c= Integer.parseInt(teclado.next());
if(dato_c==cima.getCodigo()){
eliminar();
System.out.print("\n"+"Los datos del usuario han sido eliminados."+"\n");
}
if(dato_c!=cima.getCodigo()){
System.out.print("\n"+"Los datos del usuario han sido eliminados."+"\n");
}
}
Si alguien puede orientarme seria genial, no puedo usar mas que este código. Lo que intente fue cambiar el orden segun el codigo y mandarlo a la cima, pero no lo logre...
Valora esta pregunta


0