Foros del Web » Programación para mayores de 30 ;) » C/C++ »

apuntadores pilas (push)

Estas en el tema de apuntadores pilas (push) en el foro de C/C++ en Foros del Web. ok quisiera saber que hacen estos apuntadores esto es un codigo de pilas aki esta el main donde envio las datos a la funcion ystruct ...
  #1 (permalink)  
Antiguo 06/07/2011, 18:18
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 15 años, 4 meses
Puntos: 0
apuntadores pilas (push)

ok quisiera saber que hacen estos apuntadores esto es un codigo de pilas
aki esta el main donde envio las datos a la funcion ystruct nivel perosna es una variable que guarda datos de una perona los puntos de rojo son los que no entiendo que hace
int main()
{
struct nivel persona,*pila=NULL;

//funcion push

int push(struct nivel **pil,struct nivel persona){
struct nivel *cima, *nodo;

cima=*pil;
nodo=(struct nivel *)malloc(sizeof(struct nivel));

if(nodo==NULL)
return 0;

strcpy(nodo->nombre,persona.nombre);
strcpy(nodo->estudio,persona.estudio);

nodo->sig=cima;

cima=nodo;

*pil=nodo;
return 1;
}
no se si pudieran explicar un poco de manera grafica con flechitas xD ok
de antemano gracias
  #2 (permalink)  
Antiguo 07/07/2011, 17:36
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: apuntadores pilas (push)

Mira esta imagen:



Los cuadrados granates son punteros existentes y el verde es un puntero nuevo. El azul es una variable de tipo struct nivel.

Ahora para ir entendiendo:

cima = *pil: cima es un puntero al primer elemento de la pila y pil es un doble puntero. Se pasa como doble puntero para poder cambiar el valor del puntero a la cima (la cima es el primer elemento de la pila).

nodo->sig=cima: esto se realiza porque el nuevo nodo va a pasar a ser el primero en la pila. Lo que estás haciendo si te fijas en el dibujo es que el elemento siguiente del primero es el segundo (que antes era el primero, por eso se iguala a cima).

cima=nodo: completamente innecesario porque sólo se utiliza dentro de la función

*pil=nodo: aquí es donde le dices que el primer elemento de la pila es el nuevo nodo.

Etiquetas: enlazar, nodos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:29.