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.