Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/12/2006, 16:26
Avatar de BLEND
BLEND
 
Fecha de Ingreso: marzo-2006
Mensajes: 97
Antigüedad: 19 años
Puntos: 0
Re: Problema con listas enlazadas

Hey Max, pero por ejemplo en este codigo que tengo, como se supone que elimino la variable apTemp2, ya que si coloco el delete(apTemp2), tengo conflictos a la ora de visualizar mis datos, ya que, creo yo, los nodos se pierden, entonces si no lo elimino no hay problema, y siquiero eliminarla fuera del case, ya no puedo hacerlo, lo tendria que hacer mejor con una funcion o algo asi.

Cita:
#include <stdio.h>
#include <stdlib.h>

struct stNodo
{
int dato;
stNodo *sig;
};

typedef stNodo* apNodo;

int main()
{
int opc,num;
apNodo cabeza = new stNodo;
if(!cabeza)
{
printf("ERROR: no hay suficiente memoria disponible");
exit(1);
}
cabeza->dato = 0;
cabeza->sig = NULL;
do
{
printf("\n1.- Ingresa");
printf("\n2.- Visualiza");
printf("\n3.- Salir");
scanf("%d",&opc);
switch(opc)
{
case 1:
apNodo apTemp = new stNodo;
if(!apTemp)
{
printf("ERROR: No hay memoria suficiente");
exit(1);
}
system("cls");
printf("Numero: ");
scanf("%d",&num);
apTemp->dato = num;
apTemp->sig = cabeza;
cabeza = apTemp;
//delete apTemp;
break;
case 2:
apNodo apTemp2 = new stNodo;
if(!apTemp2)
{
printf("ERROR: No hay memoria suficiente");
exit(1);
}
apTemp2 = cabeza;
while(apTemp2->sig)
{
printf("Dato: %d\n",apTemp2->dato);
apTemp2 = apTemp2->sig;
}
system("pause");
delete apTemp2;
break;
}
}while(opc != 3);
delete cabeza;
system("pause");
return 0;
}
disculpen si el codigo es algo ambiguo, solo estoy practicando.

Otra duda, que diferencia existe entre utilizar el malloc/free y el new/delete, ya que a mi se me hace mas facil manejar las listas enlazadas con new/delete, gracias.


Saludos.