Iniciacion de punteros "nodos" de lista
Publicado por alberto (1 intervención) el 10/11/2005 18:14:50
hola. Tengo este codigo:
#include <stdio.h>
#include <stdlib.h>
typedef struct tipo_nodo
{
int dato;
struct tipo_nodo *sig;
}nodo;
nodo* NuevoNodo(int x)
{
nodo *a;
a=(nodo *)malloc(sizeof(nodo));
a->dato=x;
a->sig=NULL;
return a;
}
void InsertarCabezaLista(nodo **cabeza,int dato)
{
nodo *nuevo;
nuevo=NuevoNodo(dato);
nuevo->sig=*cabeza;
*cabeza=nuevo;
}
void main(void)
{
int d;
nodo *cabeza,*actual;
cabeza=NULL;
InsertarCabezaLista(&cabeza,5);
InsertarCabezaLista(&cabeza,7);
InsertarCabezaLista(&cabeza,27);
actual=cabeza;
while (actual!=NULL)
{
printf("Elemento=%d\n",actual->dato);
actual=actual->sig;
}
}
funciona perfecto. Pero me pregunto ¿ por que debo iniciar el nodo cabeza a NULL ? ¿ Por que no tengo que reservar memoria para este nodo con calloc o malloc ?
#include <stdio.h>
#include <stdlib.h>
typedef struct tipo_nodo
{
int dato;
struct tipo_nodo *sig;
}nodo;
nodo* NuevoNodo(int x)
{
nodo *a;
a=(nodo *)malloc(sizeof(nodo));
a->dato=x;
a->sig=NULL;
return a;
}
void InsertarCabezaLista(nodo **cabeza,int dato)
{
nodo *nuevo;
nuevo=NuevoNodo(dato);
nuevo->sig=*cabeza;
*cabeza=nuevo;
}
void main(void)
{
int d;
nodo *cabeza,*actual;
cabeza=NULL;
InsertarCabezaLista(&cabeza,5);
InsertarCabezaLista(&cabeza,7);
InsertarCabezaLista(&cabeza,27);
actual=cabeza;
while (actual!=NULL)
{
printf("Elemento=%d\n",actual->dato);
actual=actual->sig;
}
}
funciona perfecto. Pero me pregunto ¿ por que debo iniciar el nodo cabeza a NULL ? ¿ Por que no tengo que reservar memoria para este nodo con calloc o malloc ?
Valora esta pregunta


0