ayuda con agregar y eliminar pila

Iniciado por attackers, 30 Octubre 2011, 23:43 PM

0 Miembros y 1 Visitante están viendo este tema.

attackers

amigos quien me puede ayudar a terminar este codigo o darme un manual sobre agregar pila y eliminarla y mostrarla

casi todo los que consigo son con punteros

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define p printf
#define s scanf


void agregar (void);
void retirar (void);
void mostrar (void);

/*********************************************************/

int pila[100],tope=0,max=1;


main()
       {
char sc;
           
         system("cls");    
               system("color A");

               /*** MENUU DE PILA Y COLA ***/

               p("\n\t\t\t\aPROGRMA DE PILA Y COLA\n\n\t\t\t");
               p(" \n\t\t\t**Presione 1 para agregar pilas\n\n");
                p("\n\t\t\t**Presione 2 para eliminar pilas \n\n");
               p("\n\t\t\t**Presione 3 para mostrar las pilas");
                p("\n ");

sc=getch();


switch(sc)

{

case 1:
    agregar ();
    break;
   
   
    case 2 :
         retirar ();
         break;
   
   
   
         case 3 :
              mostrar ();
              break;
             
}
             
             
           


/******otro menu*/
void agregar (void)
(
char seguir



do {
              if (tope==10)
              (
             
                           p("\n\noverflow....\n\n");
              system ("pause");
              )
                     else (
                     
                     p("\n\n intruduzca una numero");
                     tope=tope+1;
                     s("%d",&pila[tope];
                     
                     )                  
                     
                     
                     p("\n\n desea añador otro elemente s/n");
                     
              seguir=getch();
             
system("cls");

) while ((seguir=='s') || (seguir=='S') && (tope<max);


void retirar (void)

(
system ("cls");
if (tope==0)
{
p("underflow presione una tecla ");

}

                     else
                     
                {
                     p("\n\n\nretirado %d de la pila\n\n", pila[tope]);
                     
                     system("pause");
                     pila[tope]=0;
                     tope=tope=-1
                     
                     }
                     )

rir3760

Deficiencias en el programa hay muchas empezando por la definición de la función principal y el uso de conio. También el uso de las macros es ... inusual. Ellas las debes utilizar para darle claridad al programa, no para moldearlo al gusto. Por favor lee los temas fijos del foro.


Errores importantes hay varios, primero declaras un array con 100 elementos y a continuación limitas el uso de estos a solo 10. En su lugar utiliza las macros como dios manda, define una y utilizala en todo el programa para indicar el numero de elementos en la pila:
#define NUM_ELEM  100

/* ... */

int pila[NUM_ELEM];

/* etc */



En cuanto a las dos operaciones básicas en una pila estas son push y pop con un indicador de posición con un valor inicial a cero. Ese es el problema en tu programa.

La operación push debería ser:
1) Agregar el elemento
2) Incrementar el contador

La operación pop debería ser:
1) Decrementas el contador
2) Sacas el elemento

Al hacerlo así el contador de posición indicara en todo momento el numero de elementos en la pila.

Un saludo
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