22/05/2006, 12:08
|
| | | Fecha de Ingreso: abril-2006 Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años, 8 meses Puntos: 9 | |
Volviendo de nuevo al mismo programa expuesto arriba, pero en este caso en vez de usar la funcion de forma recursiva para mostrar los elementos de la lista, el siguiente programa si recursividad. Qué diferencia habría entre éste programa:
#include<stdlib.h>
#include<stdio.h>
struct lista
{
int clave;
struct lista *sig;
};
void main()
{
struct lista *L;
struct lista *p;
int i;
int suma;
L = NULL; /* Crea una lista vacia */
for (i=3;i>=1;i--)
{
/* Reserva memoria para un nodo */
p = (struct lista *) malloc(sizeof(struct lista));
p->clave = i; /* Introduce la informacion */
p->sig = L; /* reorganiza */
L = p; /* los enlaces */
}
p = L;
while (p != NULL)
{
printf("%d, ", p->clave);
suma = suma + p->clave;
p = p->sig;
}
getchar();
return;
}
y este otro programa que es exactamente el mismo pero sin declarar suma y sin la instrucción suma = suma + p->clave; ?
#include<stdlib.h>
#include<stdio.h>
struct lista
{
int clave;
struct lista *sig;
};
void main()
{
struct lista *L;
struct lista *p;
int i;
L = NULL; /* Crea una lista vacia */
for (i=3;i>=1;i--)
{
/* Reserva memoria para un nodo */
p = (struct lista *) malloc(sizeof(struct lista));
p->clave = i; /* Introduce la informacion */
p->sig = L; /* reorganiza */
L = p; /* los enlaces */
}
p = L;
while (p != NULL)
{
printf("%d, ", p->clave);
p = p->sig;
}
getchar();
return;
}
Tiene algún próposito que desconozco esta intrucción? He probado sin declarar suma y la instrucción suma = suma + p->clave; y me compila perfectamente. Gracias por su ayuda. Un saludo. |