SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: mnv_19 en Domingo 22 de Julio de 2007, 20:03

Título: Funcion Pilas C
Publicado por: mnv_19 en Domingo 22 de Julio de 2007, 20:03
Hola, tengo que hacer un programa en c que controle una pila, con las funciones:
-Crearnodo
-Mostrar la pila
-Push
-Pop

He estado intentando hacerla de muchas formas, pero es que push no se como hacerlo, los elementos se insertan los ultimos verdad?como voy hasta el final? y tengo que tener en cuenta algun tope de la pila o algo asi?gracias, un saludo. :smartass:
De todas formas tengo el codigo fuente por si alguien lo quiere!
Título: Re: Funcion Pilas C
Publicado por: su - en Domingo 22 de Julio de 2007, 20:54
No es tan complicado... muestra el codigo y lee el FAQ (http://foros.solocodigo.com/index.php?showtopic=23877)
Título: Re: Funcion Pilas C
Publicado por: mnv_19 en Lunes 23 de Julio de 2007, 10:32
Código: Text
  1. void push(struct fpila **pila,int numero){ //funcion de insertar
  2.      
  3.      struct fpila *nuevo;
  4.      struct fpila *aux;
  5.      crearnodo(&nuevo,numero); //creamos el nodo
  6.      if(vacia(pila)) //si la pila esta vacia,la pila es nuevo
  7.        *pila=nuevo;
  8.      else{
  9.        aux=*pila; //si la pila no esta vacia, igualamos aux a pila
  10.        while(aux!=NULL){ //mientras sea distinto de nulo, pasamos de nodo
  11.          aux=aux->sig; //se nos colocara al final,ya que las pilas insertan el ultimo elemento
  12.        }//while
  13.        aux->sig=nuevo; //colocamos el elemento el ultimo
  14.      }//else    
  15. }//push
  16.  
  17.  

la pila necesita almacena numeros enteros.

estaria bien asi???
GRacias
Título: Re: Funcion Pilas C
Publicado por: Bicholey en Lunes 23 de Julio de 2007, 16:33
:P  :P  :P  :P  :P


Algoritmo de la función "push":

   1. Creamos un nodo para el valor que colocaremos en la pila.
   2. Hacemos que nodo->siguiente apunte a Pila.
   3. Hacemos que Pila apunte a nodo.

void Push(Pila *pila, int v) {
   pNodo nuevo;
 
   /* Crear un nodo nuevo */
   nuevo = (pNodo)malloc(sizeof(tipoNodo));
   nuevo->valor = v;
   
   /* Añadimos la pila a continuación del nuevo nodo */
   nuevo->siguiente = *pila;
   /* Ahora, el comienzo de nuestra pila es en nuevo nodo */
   *pila = nuevo;
}