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

Problema con nodo de la lista

Estas en el tema de Problema con nodo de la lista en el foro de C/C++ en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C: Ver original #include <stdio.h> #include <stdlib.h>     struct registro {           int valor ;     ...
  #1 (permalink)  
Antiguo 06/12/2010, 17:30
Avatar de Mercality  
Fecha de Ingreso: junio-2010
Mensajes: 19
Antigüedad: 13 años, 10 meses
Puntos: 0
Problema con nodo de la lista

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.   struct registro {
  5.          int valor;
  6.          struct registro *sig;
  7.          };
  8.          typedef struct registro _nodo;
  9.          
  10.     _nodo *crearlista(_nodo* apuntador) {
  11.           return (apuntador = NULL);    
  12.           }
  13.          
  14.          
  15.     _nodo *insertarenlista(int x, _nodo *apuntador){
  16.           _nodo *registronuevo;
  17.           _nodo *apuntadorauxiliar;
  18.           registronuevo = (_nodo*) malloc(sizeof(_nodo));
  19.           if (registronuevo != NULL) {
  20.                             registronuevo->valor = x;
  21.                             registronuevo->sig = NULL;
  22.          
  23.           if (apuntador== NULL) {
  24.                           apuntador = registronuevo;
  25.                           }
  26.            else {
  27.                 apuntadorauxiliar = apuntador;
  28.                
  29.                 while (apuntadorauxiliar->sig != NULL) {
  30.                       apuntadorauxiliar = apuntadorauxiliar->sig;
  31.                       apuntadorauxiliar->sig = registronuevo;
  32.                       }
  33.                      
  34.                       }
  35.              
  36.          }
  37.          
  38.          return apuntador;
  39. }
  40.  
  41.  
  42.  
  43.  
  44.     void imprimirlista(_nodo *apuntador) {
  45.          _nodo *apuntadorauxiliar;
  46.          apuntadorauxiliar = apuntador;
  47.          printf("Contenido de la lista: iniciolista-> ");
  48.          
  49.          while (apuntadorauxiliar != NULL) {
  50.                printf("%d -> ",apuntadorauxiliar->valor);
  51.                apuntadorauxiliar = apuntadorauxiliar->sig;
  52.                }
  53.              printf("%d",apuntadorauxiliar);
  54.              
  55.              }
  56.                
  57.  
  58.  
  59.  int main() {
  60.      int op,nuevovalor;
  61.      _nodo *iniciolista;
  62.      bool listacreada = false;
  63.      while (op != 6) {
  64.      printf("\t****Programa que se usa para trabajar listas simples****\n\n");
  65.      printf("Elija una de las opciones: \n");
  66.      printf("1) Crear una lista.\n");
  67.      printf("2) Insertar un elemento\n");
  68.      printf("3) Eliminar un nodo\n");
  69.      printf("4) Imprimir la lista\n");
  70.      printf("5) Eliminar la lista\n");
  71.      printf("6) Salir\n\n");
  72.      scanf("%d",&op);
  73.      
  74.      switch(op) {
  75.                 case 1:
  76.                      if (listacreada == false) {
  77.                  iniciolista = crearlista(iniciolista);
  78.                  listacreada = true;
  79.                  break;
  80.                  } else {
  81.                         printf("Error, la lista ya existe\n");
  82.                         break;
  83.                         }
  84.                  case 2:
  85.                  printf("Indique el valor a insertar en la lista: ");
  86.                  scanf("%d", &nuevovalor);
  87.                  
  88.                  iniciolista = insertarenlista(nuevovalor, iniciolista);
  89.                  break;
  90.                  case 3:
  91.                  break;
  92.                  case 4:
  93.                  imprimirlista(iniciolista);
  94.                  break;
  95.                  case 5:
  96.                  break;
  97.                  case 6:
  98.                  op = 6;
  99.                  }
  100.                  }
  101.      
  102.      
  103.  
  104.  system("pause");
  105.  
  106.   return 0;
  107. }




Me he hecho un programa que debería crearme una lista, añadir elementos, eliminarlos etc... Aun me falta la parte de eliminar, pero estoy teniendo problemas a la hora de eliminar...

Osea creo que el problema esta en los condicionales de insertar elementos.

La cosa deberia ir asi: inicio lista -> null
Insertar 5: iniciolista -> 5 - >null
insertar 10: iniciolista -> 5 -> 10 - > null


Pero inserto el 5 e inserto el 10 y al imprimir solo me muestra iniciolista -> 5 - > null.

No puedo insertar mas elementos, que podría estar pasando? aca una foto de la salida.



Etiquetas: lista, nodo
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 00:10.