Muy cierto lo que dice fradve, para agregar un poco mas simplemente cito lo que dice en la Wikipedia respecto a los nodos, hablando de estructuras de datos.
"En Programación, concretamente en estructuras de datos un nodo es uno de los elementos de una lista enlazada, de un árbol o de un grafo. Cada nodo será una estructura o registro que dispondrá de varios campos, al menos uno de esos campos será un puntero o referencia a otro nodo, de forma que conocido un nodo, a partir de esa referencia, debe poder accederse a otros nodos de la estructura. Los nodos son herramientas esenciales para la construcción de estructuras de datos dinámicas."
El siguiente código muestra el uso de los nodos en estructuras autoreferenciadas (fue un ejercicio en uno de los examenes de la facultad =D).
Código C:
Ver original// Autor: Jorge Ramírez
#include <stdio.h>
#include <stdlib.h>
struct nodo{
int elemento;
struct nodo *sgte;
};
typedef struct nodo nodos;
typedef nodos *NODO;
//---------------------------------prototipos-----------------------------------
void insertar(NODO *, int );
NODO buscalista(NODO , int );
void imprimirlista(NODO *);
//------------------------------------------------------------------------------
int main(void){
//-----------------------------declaraciones--------------------------------
NODO inicio = NULL, ptrbuscar;
int elemento, elemento_buscar, buscado;
//--------------------------------------------------------------------------
printf("\n\nIngrese elemento(entero) -1 para salir: "); while(elemento != -1){
insertar(&inicio, elemento);
printf("\n\nIngrese elemento(entero) -1 para salir: "); }
imprimirlista(&inicio);
printf("\n\nIngrese elemento a buscar: "); scanf("%d", &elemento_buscar
); ptrbuscar = buscalista(inicio, elemento_buscar);
if(ptrbuscar)
printf("\nValor encontrado es: %d", ptrbuscar
->elemento
); else
printf("\n\nEl elemento no existe.");
}
void insertar(NODO *ptrini, int elemento){
//-----------------------------declaraciones--------------------------------
NODO nuevo, actual, anterior;
//--------------------------------------------------------------------------
nuevo
= (NODO
)malloc(sizeof(nodos
)); nuevo->sgte = NULL;
nuevo->elemento = elemento;
anterior = NULL;
actual = *ptrini;
while(actual != NULL && actual->elemento < elemento){
anterior = actual;
actual = actual->sgte;
}
if(anterior != NULL){ //si no es el primero
nuevo->sgte = anterior->sgte;
anterior->sgte = nuevo;
}
if(anterior == NULL){ // si es el nuevo primer elemento, o el primero.
nuevo->sgte = *ptrini;
*ptrini = nuevo;
}
}
void imprimirlista(NODO *ptrini){
//-----------------------------declaraciones--------------------------------
NODO actual;
//--------------------------------------------------------------------------
actual = *ptrini;
while(actual != NULL){
printf("%d->", actual
->elemento
); actual = actual->sgte;
}
}
NODO buscalista(NODO ptrini, int buscado){
NODO actual = ptrini, busc;
if(actual->elemento == buscado){
return actual;
}else{
if(actual->sgte != NULL){
actual = actual->sgte;
busc = buscalista(actual, buscado);
return busc;
}else
return NULL;
}
}
Saludos visiten http://www.devshared.net