0

Quiero hacer una pila de caracteres, pero no sé cómo colocar los caracteres dentro de la pila, he estado revisando, pero en la web solo hay ejemplos con números enteros no he encontrado un solo sitio donde tengan un ejemplo utilizando arreglos en las pilas el código que tengo es el siguiente, pero quiero que en vez de que la pila funcione con números lo haga con caracteres.

#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;

struct Nodo{
    int dato;
    Nodo *siguiente;
};

//Prototipos de Función
void agregarPila(Nodo *&,int);
void sacarPila(Nodo *&,int &);

int main(){
    Nodo *pila = NULL; //Inicializamos pila
    int dato;
    char rpt;

    do{ //Pedimos todos los elementos de la pila
        cout<<"Digite un numero: ";
        cin>>dato;
        agregarPila(pila,dato);

        cout<<"\nDesea agregar otro numero a pila(s/n): ";
        cin>>rpt;
    }while((rpt == 's')||(rpt=='S'));


    cout<<"\nMostrando los elementos de la pila: ";
    while(pila != NULL){
        sacarPila(pila,dato);

        if(pila != NULL){
            cout<<dato<<" , ";
        }
        else{
            cout<<dato<<".";
        }
    }

    getch();
    return 0;
}

void agregarPila(Nodo *&pila,int n){
    Nodo *nuevo_nodo = new Nodo();
    nuevo_nodo->dato = n;
    nuevo_nodo->siguiente = pila;
    pila = nuevo_nodo;

    cout<<"\tElemento "<<n<<" agregado a PILA correctamente";
}

void sacarPila(Nodo *&pila,int &n){
    Nodo *aux = pila;
    n = aux->dato;
    pila = aux->siguiente;
    delete aux;
}
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
Lil
  • 11
  • 2
  • Te recomiendo que estudies los diferentes tipos de variables, para guardar caracteres se utilizan variables de tipo `char`. Necesitas cambiar la pila para que guarde elementos por medio de una variable tipo `char`. – FranAcuna Mar 18 '21 at 22:43

1 Answers1

2

Tu código tiene tantos problemas, la mayoría no relacionados con caracteres, que es mejor rehacerlo por completo.

El primer problema es que mezclas lenguajes, las cabeceras <conio.h> y <stdlib.h> pertenecen a y no deben ser usadas en , menos aún si tenemos en cuenta que duplican funcionalidades (la comunicación con consola) y peor aún si observamos que en realidad no usas nada de esas cabeceras (al menos en el código que publicas).

El siguiente problema que muestra tu código, es un problema recurrente en StackOverflow en Español: Confundes nodos con colecciones de datos, de esto se ha hablado en muchos otros hilos:

Te aconsejo que leas esos hilos para tener una idea más profunda de lo que intentas realmente hacer, respecto a guardar caracteres en lugar de números, simplemente cambia la definición de tu nodo:

struct Nodo{
    char dato;
//  ^^^^ <--- El dato es char.
    Nodo *siguiente;
};
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82