[ Foro de C++ ]

TDA Pila

04-Feb-2020 12:39
Invitado (Rayden)
0 Respuestas

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.)