Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2012, 12:06
dannibobani
 
Fecha de Ingreso: noviembre-2012
Ubicación: Ciudad juarez Chihuahua
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Pregunta Añadir funcion "Añadir nodo" a una lista con apuntadores

Buenos dias pues tengo una duda con este programa, es una lista simple circular pero tengo que añadirle la funcion push y pop como una pila, eh aqui el codigo en C++

‎#include <stdio.h>
#include <stdlib.h>
typedef struct NODO {
int dato;

struct NODO *siguiente;
} ;

NODO *ancla = NULL;
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");
}

Me falta añadir las funciones si me pueden ayudar por favor