12/11/2012, 21:21
|
| | Fecha de Ingreso: noviembre-2012 Ubicación: Ciudad juarez Chihuahua
Mensajes: 5
Antigüedad: 12 años Puntos: 0 | |
Respuesta: Añadir funcion "Añadir nodo" a una lista con apuntadores #include <stdio.h>
#include <stdlib.h>
typedef struct NODO {
int dato;
struct NODO *siguiente;
} ;
NODO *ancla = NULL;
void insertar_nodo (*NODO);
void imprime_lista (NODO*);
int main(void)
{
int opc;
int elem;
// creamos el nodo ancla para apuntar al inicio de la lista
// la funcion malloc crea un espacio en memoria dinamica de tamaño NODO
NODO *ancla;
ancla = (NODO*) malloc(sizeof(NODO));
ancla->dato = 0;
ancla->siguiente = NULL;
// creamos el nodo nuevo
// aqui vemos dos formas de manejar apuntadores
NODO *nuevo;
nuevo = (NODO*) malloc(sizeof(NODO));
// 1.-
(*nuevo).dato = 10;
// 2.-
nuevo->siguiente = NULL;
// enlazamos nuevo con ancla
ancla->siguiente = nuevo;
// llamamos función para imprimir lista
imprime_lista (ancla);
// creamos el nodo masnuevo
NODO *masnuevo;
masnuevo = (NODO*) malloc(sizeof(NODO));
masnuevo->dato = 100;
masnuevo->siguiente = NULL;
// enlazamos masnuevo con ancla
masnuevo->siguiente = ancla->siguiente;
ancla->siguiente = masnuevo;
// llamamos función para imprimir lista
imprime_lista (ancla);
// removemos nuevo de la lista
masnuevo->siguiente = NULL;
delete(nuevo);
// llamamos función para imprimir lista
imprime_lista (ancla);
NODO *ultimo;
ultimo= (NODO*) malloc(sizeof(NODO));
ultimo->dato=150;
ultimo->siguiente=NULL;
ultimo->siguiente=ancla->siguiente;
ancla->siguiente=ultimo;
imprime_lista (ancla);
NODO *dano;
dano= (NODO*) malloc(sizeof(NODO));
dano->dato=550;
masnuevo->siguiente=NULL;
dano->siguiente=masnuevo->siguiente;
masnuevo->siguiente=dano;
imprime_lista (ancla);
NODO *core;
core= (NODO*) malloc(sizeof(NODO));
core->dato=750;
core->siguiente=NULL;
core->siguiente=ancla->siguiente;
ancla->siguiente=core;
imprime_lista (ancla);
printf("\n\n");
system ("PAUSE");
return 0;
}
void imprime_lista (NODO *ancla)
{
NODO *l;
l = ancla;
printf ("\n\n ***** elementos en lista \n");
while (l != NULL)
{
printf ("%d ",l->dato);
l = l->siguiente;
}
printf ("\n\n");
}
void insertar_nodo (*NODO)
{
NODO *nuevo_nodo = nodo_nuevo (150);
if (nodo!=NULL)
{
nuevo_nodo->siguiente = ancla->siguiente;
ancla->siguiente=nuevo_nodo:
}
else
{
nuevo_nodo->siguiente=NODO;
*NODO = nuevo_nodo;
}
Ando muy errado? |