Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Añadir funcion "Añadir nodo" a una lista con apuntadores

Estas en el tema de Añadir funcion "Añadir nodo" a una lista con apuntadores en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/11/2012, 12:06
 
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
  #2 (permalink)  
Antiguo 09/11/2012, 02:12
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Añadir funcion "Añadir nodo" a una lista con apuntadores

¿Qué es lo que no sabes hacer? ¿Qué es lo que has hecho hasta ahora de esas funciones? ¿Por qué no funciona tu solución?
  #3 (permalink)  
Antiguo 09/11/2012, 15:45
 
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

Pues no mas pude hacer la función de imprimir y crear unos nodos pero adentro en el main... no se como hacerle para crear los nodos pero con una funcion, asi como la de imprimir, no mas necesito que la funcion siga creando nodos y los introdusca en la lista. si me puedes ayudar gracias!
  #4 (permalink)  
Antiguo 12/11/2012, 09:09
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Añadir funcion "Añadir nodo" a una lista con apuntadores

Si, puedo ayudarte, pero la cuestión no es que otro te haga la tarea, si no que la hagas tú y plantees las dudas que te surjan.
  #5 (permalink)  
Antiguo 12/11/2012, 19:45
 
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

Si pues si :/ apenas pude hacer la lista deplano con las funciones no se en que moverle... No tienes msn? para que me puedas ayudar si eres tan amable.
  #6 (permalink)  
Antiguo 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?
  #7 (permalink)  
Antiguo 13/11/2012, 06:37
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Añadir funcion "Añadir nodo" a una lista con apuntadores

Algo así es
  #8 (permalink)  
Antiguo 13/11/2012, 16:12
 
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

Andaba mal, Ya descubri que primero tengo que hacer una funcion que cree espacio en la memoria, depues una que enlace en nodo a la cola:
Heimissh si me puedes instruir que estoy haciendo mal
Ya hice las dos funciones

‎#include <cstdlib>
#include <iostream>

using namespace std;
typedef struct NODO {
int dato;

struct NODO *siguiente;
} ;

NODO *ancla = NULL;
void imprime_lista (NODO*);
void crear (int dato);
void inserta (NODO *ancla, NODO NODO, int dato);
int main(int argc, char *argv[])
{
int opc;
int dato;
void crear (int dato);
void imprime_lista (NODO *ancla);

system("PAUSE");
return EXIT_SUCCESS;
}

NODO* Crear(int dato)
{
NODO *nuevo;
nuevo = (NODO*) malloc(sizeof(NODO));
(*nuevo).dato=dato;
nuevo->siguiente= NULL;
return(nuevo);
}

NODO inserta (NODO *ancla,NODO *nuevo, int dato)
{
NODO *masnuevo;
nuevo->dato = 100;
nuevo->siguiente = NULL;
masnuevo->siguiente = ancla->siguiente;
ancla->siguiente = masnuevo;


}

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");
}

Etiquetas: c++, circular, lista, pila
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:28.