Ayuda solo me imprime la pila y no la cola
Publicado por Char (20 intervenciones) el 25/10/2019 08:25:26
Hola tengo un problema en mi código es que en el main tengo el código de la pila y de la cola pero el problema es que solo me imprime la pila y no la cola y si cambio sus lugares (poner el código de la cola arriba de la pila, solo me imprime la cola) quería saber como resolver eso.
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include<iostream>
#include <string>
#include <fstream>
using namespace std;
struct Nodo{
int dato;
Nodo *siguiente;
};
//Prototipos de Funciones
void insertarCola(Nodo *&,Nodo *&,int);
bool cola_vacia(Nodo *);
void suprimirCola(Nodo *&,Nodo *&,int &);
typedef Nodo *ptrNodo;
void agregarPila( ptrNodo *ptrCima, int n );
void sacarPila( ptrNodo *ptrCima );
void imprimirPila( ptrNodo cursor );
int main(){
ifstream in( "Pop.txt" );
string s, t;
int dato;
Nodo *pila = NULL;
Nodo *frente = NULL;
Nodo *fin = NULL;
while( !in.eof() ){
getline( in, s, ',' );
in >> dato;
getline( in, t ); // leer el salto de línea del fichero
if( s == "PUSH" ){
agregarPila( &pila, dato );
imprimirPila( pila );
}else{
sacarPila( &pila );
imprimirPila( pila );
}
}
in.close();
while( !in.eof() ){
getline( in, s, ',' );
in >> dato;
getline( in, t ); // leer el salto de línea del fichero
if( s == "PUSH" ){
insertarCola(frente,fin,dato);
}else{
suprimirCola(frente,fin,dato);
}
}
cout<<"\nMostrando los elementos de la cola: ";
while(frente != NULL){
suprimirCola(frente,fin,dato);
if(frente != NULL){
cout<<dato<<" -> ";
}
else{
cout<<dato<<"->";
}
}
cout<<"NULL\n\n";
in.close();
return 0;
}
//Función para insertar elementos en la cola
void insertarCola(Nodo *&frente,Nodo *&fin,int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato = n;
nuevo_nodo->siguiente = NULL;
if(cola_vacia(frente)){
frente = nuevo_nodo;
}
else{
fin->siguiente = nuevo_nodo;
}
fin = nuevo_nodo;
}
//Función para determinar si la cola está vacia
bool cola_vacia(Nodo *frente){
return (frente == NULL)? true : false;
}
//Función para eliminar elementos de la cola
void suprimirCola(Nodo *&frente,Nodo *&fin,int &n){
n = frente->dato;
Nodo *aux = frente;
if(frente == fin){
frente = NULL;
fin = NULL;
}
else{
frente = frente->siguiente;
}
delete aux;
}
//Pila
void agregarPila( ptrNodo *ptrCima, int n ){
ptrNodo ptrNuevo;
ptrNuevo = new Nodo;
if ( ptrNuevo != NULL ) {
ptrNuevo->dato = n;
ptrNuevo->siguiente = *ptrCima;
*ptrCima = ptrNuevo;
}
cout << "\tSe agrego: " << n << endl;
}
void sacarPila( ptrNodo *ptrCima ){
ptrNodo ptrTemp;
int valorElim;
if( ptrCima != NULL ) {
ptrTemp = *ptrCima;
valorElim = (*ptrCima)->dato;
*ptrCima = (*ptrCima)->siguiente;
delete(ptrTemp);
cout << "\tSe elimino: " << valorElim << endl;
}else
cout << "\n\tLa Pila esta vacia" << endl;
}
void imprimirPila( ptrNodo cursor )
{
if( cursor == NULL ) {
cout << "\n\tLa pila esta vacia\n";
}else{
cout << "\tLa pila es: " ;
while( cursor != NULL ) {
cout << cursor->dato << "->";
cursor = cursor->siguiente;
}
cout << "NULL\n\n";
}
}
Valora esta pregunta


0