elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Codigo para invertir pilas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Codigo para invertir pilas  (Leído 10,748 veces)
willsbs

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Codigo para invertir pilas
« en: 14 Marzo 2015, 03:00 am »

Buenas...

Tengo este codigo que tiene varias funciones, una de ellas es invertir una pila, el codigo corre sin errores, pero a la hora de pedirle que muestre la pila invertida, unicamente me muestra el mensaje de "mostrando pila invertida" pero no me muestra nada, no se si alguien pueda ayudarme a encontrar mi error.

Gracias

...

#include <cstdlib>
#include <iostream>
#include <stack>
using namespace std;
 
struct nodo{
    int nro;
    struct nodo *sgte;
};
 
typedef nodo *ptrPila;   // creando nodo tipo puntero( tipo de dato )

  // creando nodo tipo puntero( tipo de dato )
 
/*                        Apilar elemento     
------------------------------------------------------------------------*/
void push( ptrPila &p, int valor )
{
     ptrPila aux;
     aux = new(struct nodo);  // apuntamos al nuevo nodo creado
     aux->nro = valor;
     
     aux->sgte = p ;
     p = aux ;
}
 
/*                Desapilar elemento(devuelve elemento)     
------------------------------------------------------------------------*/
int pop( ptrPila &p )
{
     int num ;
     ptrPila aux;
     
     aux = p ;
     num = aux->nro;   // asignamos el primer valor de la pila
     
     p = aux->sgte ;
     delete(aux);
     
     return num;
}
 

 
/*                Muestra elementos de la pila invertidos 
------------------------------------------------------------------------*/
void invertirpila(int argc, int *argv[])

  stack<int> s;
  for (int i='0'; i >= '1'; i++)
    s.push(i);
 
  while (s.empty() )
  {
    cout << s.top() << " " ;
    s.pop();
  }
 
}
//        Eliminar todos los elementos de la pila     
//------------------------------------------------------------------------*/
void destruir_pila( ptrPila &p)
{
     ptrPila aux;
     
     while( p != NULL)
     {
           aux = p;
           p = aux->sgte;
           delete(aux);
     }
}

/*                        Menu de opciones   
------------------------------------------------------------------------*/
void menu()
{
    cout<<"\n\t IMPLEMENTACION DE PILAS EN C++\n\n";
    cout<<" 1. APILAR                                "<<endl;
    cout<<" 2. DESAPILAR                             "<<endl;
    cout<<" 3. MOSTRAR PILA INVERTIDA                "<<endl;
    cout<<" 4. ELIMINAR PILA                         "<<endl;
    cout<<" 5. SALIR                                 "<<endl;
 
    cout<<"\n INGRESE OPCION: ";
}
 
/*                        Funcion Principal       
------------------------------------------------------------------------*/
int main(int argc, int *argv[])
{
    ptrPila p = NULL;  // creando pila
    int dato;
    int op;
    int x ; // numero que devuelve la funcon pop
   
    system("color 0b");
 
    do
    {
        menu();  cin>> op;
 
        switch(op)
        {
            case 1:
 
                 cout<< "\n NUMERO A APILAR: "; cin>> dato;
                 push( p, dato );
                 cout<<"\n\n\t\tNumero " << dato << " apilado...\n\n";
            break;
 
 
            case 2:
 
                 x = pop( p );
                 cout<<"\n\n\t\tNumero "<< x <<" desapilado...\n\n";
            break;
                 
 
            case 3:
 
               
                cout << "\n\n MOSTRANDO PILA INVERTIDA\n\n";
                 if(p!=NULL)
                    pop( p );
                 else
                    cout<<"\n\n\tPila vacia..!"<<endl;
                   
               
             
            break;
 
 
            case 4:
 
                 destruir_pila( p );
                 cout<<"\n\n\t\tPila eliminada...\n\n";
            break;
           
         }
 
        cout<<endl<<endl;
        system("pause");  system("cls");
 
    }while(op!=5);
   
   
    return 0;
}


« Última modificación: 14 Marzo 2015, 18:40 pm por willsbs » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Codigo para invertir pilas
« Respuesta #1 en: 14 Marzo 2015, 03:55 am »

Tengo este codigo [...] pero a la hora de pedirle que muestre la pila invertida, unicamente me muestra el mensaje de "mostrando pila invertida" pero no me muestra nada
No es mi intención ser grosero (o pasar por un [CENSORED]) pero no entiendo cual es el problema. Si tu hiciste el programa debes saber al menos de forma general lo que hace. No muestra la pila invertida porque ... no la inviertes.

El tercer caso consiste de las operaciones:
Código
  1. case 3:
  2.   cout << "\n\n MOSTRANDO PILA INVERTIDA\n\n";
  3.   if (p != NULL)
  4.      pop(p);
  5.   else
  6.      cout << "\n\n\tPila vacia..!" << endl;
  7. break;
  8. case 4:
En pseudocodigo:
Código:
Imprimir "\n\n MOSTRANDO PILA INVERTIDA\n\n"
Si la pila no esta vacía
   Sacar un elemento, la operación que se realiza con ese valor es ... ninguna
Caso contrario
   Imprimir "\n\n\tPila vacia..!"

Formas para procesar una lista vinculada (al final es lo que utilizas) hay varias ya sea mediante iteración o recursion, a lo mejor tu pregunta va en ese sentido o tal vez se deba llamar a la función que invierte un cadena.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Invertir cadena?
PHP
yeikos 1 2,981 Último mensaje 10 Abril 2005, 05:18 am
por byebye
[T] Invertir saltos
Ingeniería Inversa
Erik# 1 1,876 Último mensaje 1 Enero 2009, 16:47 pm
por Amerikano|Cls
Ayuda, Invertir algoritmo para crear Keygen o Parchear Programa
Ingeniería Inversa
serrano15 0 2,141 Último mensaje 27 Marzo 2012, 09:16 am
por serrano15
Algoritmo para invertir un array C++
Programación C/C++
seryioo 1 1,448 Último mensaje 6 Agosto 2015, 10:36 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines