|    
			
				12/11/2012, 21:21
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: noviembre-2012 Ubicación: Ciudad juarez Chihuahua 
						Mensajes: 5
					 Antigüedad: 12 años, 11 meses 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?
     |