[ Foro de C++ ]
necesito hacer un TDA de pila en la que pueda insertar y leer datos de archivo de tipo string de un nodo de la pila:
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
#include <conio.h>
#include<cstdlib>
//Definicion de la Estructura
using namespace std;
struct Nodo {
char let;//para obtener caracteres
struct Nodo *sgte;
};
typedef struct Nodo *Puntero;
class Pila {
public:
Pila(void);
void Apilar(int);
int Desapilar(void);
void tope(void);
bool PilaVacia(void);
void MostrarPila(void);
void DestruirPila(void);
private:
Puntero Tope;
};
Pila::Pila(void) {
Tope == NULL;
}
bool Pila::PilaVacia(void) {
if (Tope == NULL)
return true;
else
return false;
}
//apilar datos en la Pila
void Pila::Apilar(int x) {
Puntero p_aux;
p_aux = new(struct Nodo);
p_aux->let = x;
p_aux->sgte = Tope;
Tope = p_aux;
}
//eliminara el elemento del tope de la pila ingresado
int Pila::Desapilar(void) {
int x;
Puntero p_aux;
if (Tope == NULL)
cout << "\n\n\t la Pila esta vacia";
else {
p_aux = Tope;
x = p_aux->let;
Tope = Tope->sgte;
delete(p_aux);
}
return x;
}
//nos mostrara todos los elementos ingresados
void Pila::MostrarPila(void) {
Puntero p_aux;
p_aux = Tope;
while (p_aux != NULL) {
cout << "\t\t\t" << p_aux->let << endl;
p_aux = p_aux->sgte;
}
}
//destruye la pila completamente
void Pila::DestruirPila(void) {
Puntero p_aux;
while (Tope != NULL) {
p_aux = Tope;
Tope = Tope->sgte;
delete(p_aux);
}
}
void menu(void) {
cout << "\n\t Pila \n\n";
cout << "\t 1.Entrada" << endl;
cout << "\t 2.Eliminar de la pila" << endl;
cout << "\t 3.Mostrar " << endl;
cout << "\t 4.Extraer" << endl;
cout << "\t 5.salir" << endl;
cout << "\t ESCOGA UNA OPCION" << endl;
}
int main(void) {
system("color f9");
Pila pila;
char x;
int op;
do {
menu(); cin >> op;
switch (op)
{
case 1:cout << "\n\t ingrese numero para la pila: "; cin >> x;
pila.Apilar(x);
cout << "\n\n\t\t Numero(" << x << ")agregado en la pila.\n\n";
break;
case 2:
if (pila.PilaVacia() == true)
cout << "\n\n\t la pila esta vacia.";
else {
x = pila.Desapilar();
cout << "\n\n\t numero (" << x << ") eliminado de la pila\n";
}
break;
case 3:
cout << "\n\n\t\t mostrado la pila \n\n ";
if (pila.PilaVacia() != true)
pila.MostrarPila();
else
cout << "\n\n\t la pila esta vacia. " << endl;
break;
case 4:
pila.DestruirPila();
cout << "\n\n\t pila ha sido DESTRUIDA \n\n";
break;
}
cout << endl << endl;
system("pause");
system("cls");
} while (op != 5);
system("pause");
return 0;
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)