![]() |
Problema con listas enlazadas Que tal, estoy realizando un programa con listas enlazadas, pero tengo un error en mi funcion que inserta un nuevo nodo en la lista, parte de mi codigo es este: Cita:
Cita:
Saludos... |
Re: Problema con listas enlazadas Que tal, ya pude resolver mi problema, tenia mal declarada la llamada a mi funcion. Otra cosa, al utilizar new tengo que utilizar delete o no, por ejemplo: Cita:
|
Re: Problema con listas enlazadas Para cada new debe haber su delete correspondiente. |
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:
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. |
Re: Problema con listas enlazadas Estas programando en C, no en C++. Debes usar solo malloc y free. New y delete son exclusivamente de C++. int *x = malloc(5 * sizeof(x)); ... free(x); |
Re: Problema con listas enlazadas Pero si es permitido mezclar C con C++, o se tiene que seguir esos entandares ? |
Re: Problema con listas enlazadas C es una cosa. C++ es otra cosa. Si mezclas, obtendrás algo que, aunque te funcione a ti, ni es estándar, ni portable, ni nada. Cualquier exposición pública de tu código sería rechazada. En privado, haz lo que quieras :) |
Re: Problema con listas enlazadas Ahi si noe stoy muy de acuerdo. Una cosa es saber diferenciar sobr elos lenguajes y otra mezclarlos. Y en mi opinion no hay ningun problema al mezclarlos, siempre y cuando no hagas un revoltijo de hacer "new" y luego "free". Yo acostumbro a dividir mis programas en modulos unos escritos en C++ y otros en C. O incluso usar caracteristicas de C y de C++ en un mismo modulo. no pasa nada, es legible, funciona y es aceptado. Efectivamente son 2 lenguajes diferentes aunque en si son un conjunto y no veo el problema en juntarlos sino, para eso usaria Java en vez de C++. Saludos |
Re: Problema con listas enlazadas Cita:
Cita:
Esto no es muy claro, pese a que funcione: Código: char x[] = "Hola C.\n"; |
Re: Problema con listas enlazadas Jajjaja. Eso es hacer batido de C y de C++. Yo no hablo de ese tipo de mezclas, digo si voy a usar chars uso chars y nada mas, si voy a usar la clase string pues nada mas eso y ya. A lo que me refiero con la mezclar es por ejemplo crear una clase con chars dentro de ella, usar true y false(aunque al parecer ya estan en el estandar C99). Usa un poco la STl en un programa que a simple vista es C. Cosas asi. Lo que tu pusiste es revolver, lo que si no se debe hacer, de lo que hablo es mezclar inteligentemente. Saludos. |
Re: Problema con listas enlazadas Cita:
Recordemos que C++ tiene 3 paradigmas, no tiene porqué aparecer una clase o template. |
Re: Problema con listas enlazadas Tu problema no es con el uso de la memoria dinamica(en este caso new y delete), sino en tu algoritmo en sí. tu cabeza que se supone tiene que ser el primer nodo en realidad es el ultimo, por estar usano algo muy similar al algoritmo de ordenacion de burbuja. ademas tus supuestos nodos apTemp en realidad no los usas como temporales sino que en realidad ellos forman tu lista es por eso que al eliminarlos te elimina tus datos. no para el uso de new y delete sino para la implementacion de tus listas sería bueno que implementaras unas funciones que realicen una veraddera tarrea de llenado de lista.(enlazar nodos). un error agregado es la declaracion de variables dentro de los bloques case: para poder hacerlo tienes que crear un bloque {} para que tus variables puedan ser destruidas al abandonar el bloque. en tu caso usas punteros que manualmete eliminarias, pero aun asi es recomendable usar un bloque {}o en su caso usar una funcion. en tu caso en particular, parese que tu codigo esta basado en C, por tanto seria bueno que siguieras asi. si fuese lo contrario no seria tan estricto. Un compilador de C no permite codigo C++, pero un compilador de C++ si permite codigo de C. |
Re: Problema con listas enlazadas ¡¡¡ Hey muchas gracias por todos lo comentarios !!!, de verdad que es bueno saber todo ese tipo de cosas que dificilmente ve uno en la escuela, y solo se logra aprender preguntando a la gente con mayor experiencia. Cita:
Una ultima peticion, si es que se puede, he buscado cual es la diferencia exacta entre C y C++, ce que la pregunta es un poco trillada, pero en realidad no entiendo muy bien cual sea la diferencia, y tambien acerca de los Estandares. Tambien gracias Nivel7, el codigo que coloque lo hice como prueba, aunque pense que estaba bien, ya veo que no ;P, gracias por los comentarios. Saludos. |
Re: Problema con listas enlazadas Cita:
1. Tenemos C, que tiene el paradigma estructurado. 2. Luego apareció C++, que es un C con dos nuevos paradigmas: Programación Orientada a Objetos y Programación Genérica (o con plantillas); además de otras mil cosas. Tu problema es que estás mezclando cosas de C y C++. Las funciones que usas y en general el estilo que utilizas es C. Sin embargo, usas "new" y "delete", que sólo existen en C++. |
Re: Problema con listas enlazadas HEY!!! QUE PASA esa pregunta esta super explicada en las FAQs..... Se nota que no las has checado. Saludos |
Re: Problema con listas enlazadas Cita:
Saludos. |
| La zona horaria es GMT -6. Ahora son las 07:03. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.