Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2012, 15:21
maur1c10
 
Fecha de Ingreso: octubre-2009
Mensajes: 25
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta problema con programa pilas

necesito ayuda, estoy aprendiendo pilas y quiero hacer una pila que en cada nodo tenga una estructura y el puntero hacia el sig. elemento, pero en la funcion pop tengo errores estoy usando el dev c++, no se si como lo estoy haciendo es correcto o debo usar otro metodo aqui les dejo mi codigo, gracias de antemano por la ayuda.

Código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct agenda{
    int valor;
   char nombre[30];
   char apellido[30];}; 
 
typedef struct _nodo {
   struct agenda datos;
   struct _nodo *siguiente;
} tipoNodo;

char *nomaux, *apeaux;
int *vaux;
 
typedef tipoNodo *pNodo;
typedef tipoNodo *Pila;
 
/* Funciones con pilas: */
void Push(Pila *l,int pvalor,char papellido[],char pnombre[]);
struct agenda Pop(Pila *l);

int main() {
   struct agenda salida;
   int num,i,val;
   char nom[30],ape[30];
   nomaux=nom;
   apeaux=ape;
   vaux=&val;
   Pila pila = NULL;
   printf("Ingreso de datos de personas, cuantas personas son: \n");
   scanf("%i",&num);
   for(i=0;i<num;i++){
       printf("\n digite el nombre de la persona no. %i",i+1);  
       gets(nom);
       printf("\n digite el apellido de la persona no. %i",i+1);
       gets(ape);
       printf("\n digite la edad de la persona no. %i",i+1); 
       scanf("%i",&val);     
       Push(&pila,val,ape,nom);}              
   getchar();
   return 0;
}

void Push(Pila *pila,int pvalor,char papellido[30],char pnombre[30]){
   pNodo nuevo;
   /* Crear un nodo nuevo */
   nuevo = (pNodo)malloc(sizeof(tipoNodo));
   nuevo->datos.valor = pvalor;
   strcpy(nuevo->datos.nombre,pnombre);
   strcpy(nuevo->datos.apellido,papellido);
   /* 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;}

struct agenda Pop(Pila *pila){
   struct agenda salida;    
   pNodo nodo; /* variable auxiliar para manipular nodo */
   /* Nodo apunta al primer elemento de la pila */
   nodo = *pila;
   if(!nodo){
      salida.valor=0;       
      return salida; /* Si no hay nodos en la pila retornamos 0 */} 
   /* Asignamos a pila toda la pila menos el primer elemento */
   *pila = nodo->siguiente;
   /* Guardamos 
   el valor de retorno */
   strcpy(salida.apellido,pila->datos.apellido);
   strcpy(salida.nombre,pila->datos.nombre);
   strcpy(salida.valor,pila->datos.valor);
   /* Borrar el nodo */
   free(nodo);
   return salida;}
me da los sig. errores por cada linea que esta en rojo
`datos' has not been declared
request for member of non-aggregate type before '.' token

Última edición por maur1c10; 19/07/2012 a las 15:43