Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - terym

#1
hola disculpen soy nueva en esto y me encontre con este foro q me parecio interesante y creo q me podria ayudar estoy implementando una pila
#include <stdio.h>
#include <stdlib.h>


  /* declaracion */
struct tpila{
  int clave;
  struct tpila *sig;
};
   /* prototipos e implementacion */

void crear(struct tpila **pila);
int vacia(struct tpila *pila);
void apilar(struct tpila *pila, int elem);
int desapilar(struct tpila *pila,int *elem);
void imprimirpila( struct tpila *ptrActual,struct tpila *pila);


void imprimirpila( struct tpila *ptrActual,struct tpila *pila)
{


    printf( "La pila es:\n\n" );


    while ( ptrActual != NULL) {
        printf( "%d -> ", ptrActual->clave );
       ptrActual= pila->sig;
       pila->sig= ptrActual;
       system("pause");



    }
     printf( "apunta a null\n" );


}




void crear(struct tpila **pila)
{  *pila = (struct tpila *) malloc(sizeof(struct tpila));

  (*pila)->sig = NULL;

  printf("pila creada\n");
}

int vacia(struct tpila *pila){
  return (pila->sig == NULL);
}

void apilar(struct tpila *pila, int elem){
  struct tpila *nuevo;

  nuevo = (struct tpila *) malloc(sizeof(struct tpila));


  nuevo->clave = elem;
   nuevo->sig = pila->sig;
  pila->sig = nuevo;
}

int desapilar(struct tpila *pila,int *elem){
  struct tpila *aux;


  aux = pila->sig;
  *elem= aux->clave;
  pila->sig = aux->sig;
  free(aux);
  return *elem;
}

   /* programa de prueba */
int main(void)
{
  struct tpila *pila;
  int elem,opc,reg;
  crear(&pila);

do{
  printf("que deseas hacer  1)apilar 2)desapilar 3)imprimir\n");
  scanf("%d",&opc);


  switch(opc){

    case 1:

    printf("introduce el numero a apilar");
      scanf("%d",&elem);
     apilar(pila,elem);
   printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
    break;

    case 2:
    if(!vacia(pila)){
     desapilar(pila,&elem);
     printf( "elemento retirado\n");
    }
                else
                    printf( "La pila esta vacia\n" );
                break;

    case 3:
    if ( !vacia( pila ) )
    imprimirpila( pila );
                else
                    printf( "La pila esta vacia\n" );
                    printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
                break;

    }

}
  while(reg==5);
return 0;



}
les vuelvo a comentar soy principiante si alguien me podri ayudar les agradeceria mucho el error esta ala hora de imprimir no me imprime todos los elementos de la lista le dejo mi correo por detecta el error terezza_31@hotmail.com
#2
Programación C/C++ / Re: De C++ a C
21 Noviembre 2011, 20:29 PM
le dejo mi correoo  terezza_31@hotmail.com por si alguien me pudiese ayudar
#3
Programación C/C++ / Re: De C++ a C
21 Noviembre 2011, 20:25 PM
hola disculpen soy nueva en esto y me encontre con este foro q me parecio interesante y creo q me podrian ayuda estoy implementando una pila
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <conio.h>


  /* declaracion */
struct tpila{
  int clave;
  struct tpila *sig;
};
   /* prototipos e implementacion */

void crear(struct tpila **pila);
int vacia(struct tpila *pila);
void apilar(struct tpila *pila, int elem);
int desapilar(struct tpila *pila,int *elem);
void imprimirpila( struct tpila *ptrActual,struct tpila *pila);


void imprimirpila( struct tpila *ptrActual,struct tpila *pila)
{


    printf( "La pila es:\n\n" );


    while ( ptrActual != NULL) {
        printf( "%d -> ", ptrActual->clave );
       ptrActual= pila->sig;
       pila->sig= ptrActual;
       system("pause");



    }
     printf( "apunta a null\n" );


}




void crear(struct tpila **pila)
{  *pila = (struct tpila *) malloc(sizeof(struct tpila));

  (*pila)->sig = NULL;

  printf("pila creada\n");
}

int vacia(struct tpila *pila){
  return (pila->sig == NULL);
}

void apilar(struct tpila *pila, int elem){
  struct tpila *nuevo;

  nuevo = (struct tpila *) malloc(sizeof(struct tpila));


  nuevo->clave = elem;
   nuevo->sig = pila->sig;
  pila->sig = nuevo;
}

int desapilar(struct tpila *pila,int *elem){
  struct tpila *aux;


  aux = pila->sig;
  *elem= aux->clave;
  pila->sig = aux->sig;
  free(aux);
  return *elem;
}

   /* programa de prueba */
int main(void)
{
  struct tpila *pila;
  int elem,opc,reg;
  crear(&pila);

do{
  printf("que deseas hacer  1)apilar 2)desapilar 3)imprimir\n");
  scanf("%d",&opc);


  switch(opc){

    case 1:

    printf("introduce el numero a apilar");
      scanf("%d",&elem);
     apilar(pila,elem);
   printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
    break;

    case 2:
    if(!vacia(pila)){
     desapilar(pila,&elem);
     printf( "elemento retirado\n");
    }
                else
                    printf( "La pila esta vacia\n" );
                break;

    case 3:
    if ( !vacia( pila ) )
    imprimirpila( pila );
                else
                    printf( "La pila esta vacia\n" );
                    printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
                break;

    }

}
  while(reg==5);
return 0;



}
les vuelvo a comentar soy principiante si alguien me podri ayudar les agradeceria mucho el error esta ala hora de imprimir