Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Shannon en 4 Octubre 2018, 01:20 am



Título: Alguien sabe como poner BORRAR en este programa de DEV-C++
Publicado por: Shannon en 4 Octubre 2018, 01:20 am
Código
  1.  
  2.  
  3. #include<stdlib.h>
  4. #include<stdio.h>
  5.  
  6. typedef struct _nodo
  7. {
  8. int valor;
  9. struct _nodo *siguiente;
  10. }tipoNodo;
  11.  
  12. typedef tipoNodo *pNodo;
  13.  
  14. void Anadir (pNodo *primero,pNodo *ultimo,int v)
  15. {
  16. pNodo nuevo;
  17. nuevo=(pNodo) malloc(sizeof(tipoNodo));
  18. nuevo-> valor=v;
  19. nuevo->siguiente=NULL;
  20. if(*ultimo)
  21.     (*ultimo)->siguiente=nuevo;
  22.     *ultimo=nuevo;
  23.     if(!(*primero))
  24.        *primero=nuevo;
  25.  
  26. }
  27.  
  28. int leer(pNodo *primero,pNodo *ultimo)
  29. {
  30. pNodo nodo;
  31. int v;
  32. nodo=*primero;
  33. if(!nodo)
  34. return 0;
  35. *primero=nodo ->siguiente;
  36. v=nodo->valor;
  37. free(nodo);
  38. if(!*primero)
  39. *ultimo=NULL;
  40. return v;
  41. }
  42.  
  43. int main()
  44. {
  45. pNodo primero =NULL,ultimo=NULL;
  46.  
  47.  
  48. Anadir(&primero,&ultimo,10);
  49. printf("Anadir(10)\n");
  50. printf("Leer: %d\n",leer(&primero,&ultimo));
  51. Anadir(&primero,&ultimo,40);
  52. printf("Anadir(40)\n");
  53. Anadir(&primero,&ultimo,30);
  54. printf("Anadir(30)\n");
  55. printf("Leer :%d\n",leer(&primero,&ultimo));
  56. printf("Leer :%d\n",leer(&primero,&ultimo));
  57. Anadir(&primero,&ultimo,90);
  58. printf("Leer :%d\n",leer(&primero,&ultimo));
  59. printf("Leer :%d\n",leer(&primero,&ultimo));
  60.  
  61. system("PAUSE");
  62.  
  63. return 0;
  64.  
  65. }
  66.  
  67.  
  68.  


[MOD] Para publicar código usar las etiquetas GeSHi.


Título: Re: Alguien sabe como poner BORRAR en este programa de DEV-C++
Publicado por: Beginner Web en 4 Octubre 2018, 04:03 am
Es con delete(nodo);


Título: Re: Alguien sabe como poner BORRAR en este programa de DEV-C++
Publicado por: Shannon en 4 Octubre 2018, 06:40 am
como pongo el delate nodo?


Título: Re: Alguien sabe como poner BORRAR en este programa de DEV-C++
Publicado por: Beginner Web en 4 Octubre 2018, 07:36 am
Quieres poner un borrar nodo dentro de tu codigo dices?

Aca tengo unas funciones para desligar un nodo de una lista y devolverlas al programa donde se invoco, si el elemento devuelvo no es nulo entonces simplemente hace un delete(nodo); y ya

Código
  1. pnodo quitar_inicio(pnodo &lista)
  2. {
  3. pnodo borrado;
  4. if(lista==NULL){
  5. borrado=NULL;
  6. }
  7. else{
  8. borrado=lista;
  9. lista=lista->sig;
  10. borrado->sig=NULL;
  11. }
  12. return borrado;
  13. }
  14.  
  15. pnodo quitar_final(pnodo &lista)
  16. {
  17. pnodo borrado, i;
  18. if(lista==NULL){
  19. borrado=NULL;
  20. }
  21. else{
  22. if(lista->sig==NULL){
  23. borrado=lista;
  24. lista=NULL;
  25. }
  26. else{
  27. for(i=lista;(i->sig)->sig!=NULL;i=i->sig);
  28. borrado=i->sig;
  29. i->sig=NULL;
  30. }
  31. }
  32. return borrado;
  33. }
  34.  
  35. pnodo quitar_nodo(pnodo &lista, int valor)
  36. {
  37. pnodo borrado, i;
  38. if(lista==NULL){
  39. borrado=NULL;
  40. }
  41. else{
  42. if(valor==lista->dato){
  43. borrado=lista;
  44. lista=borrado->sig;
  45. borrado->sig=NULL;
  46. }
  47. else{
  48. for(i=lista;i->sig!=NULL && valor!=(i->sig)->dato;i=i->sig);
  49. if(i->sig!=NULL){
  50. borrado=i->sig;
  51. i->sig=borrado->sig;
  52. borrado->sig=NULL;
  53. }
  54. else{
  55. borrado=NULL;
  56. }
  57. }
  58. }
  59. return borrado;
  60. }


Título: Re: Alguien sabe como poner BORRAR en este programa de DEV-C++
Publicado por: MAFUS en 4 Octubre 2018, 09:27 am
Es en C, no C++.