Título: Punteros Dobles en C Publicado por: GonzaloRamirez en 6 Diciembre 2019, 20:43 pm Hola, alguien me puede dar una ayuda con este código de insertar ordenado en una lista? , no logro comprender el nodo** lista, por que se pasa como doble puntero? que función cumple.
void insertar_ordenado (nodo** lista, elemento e){ nodo* actual; nodo* anterior; nodo* nuevo = malloc(sizeof(nodo)); nuevo->e=e; actual=*lista; anterior=NULL; while(actual!=NULL && actual->e.dni < e.dni){ anterior=actual; actual=actual->sig; } if(anterior!=NULL){ anterior->sig=nuevo; nuevo->sig=actual; }else{ nuevo->sig=*lista; *lista=nuevo; } } Título: Re: Punteros Dobles en C Publicado por: ThunderCls en 6 Diciembre 2019, 21:51 pm En este caso la funcion "insertar_ordenado" intentara modificar la cabeza de lista y por consiguiente dicho puntero necesita ser pasado como referencia (doble puntero), de lo contrario el puntero o nodo principal de la lista seria pasado como copia y solo se modificaria el orden de la copia de la lista dentro de dicha funcion y no la original. Una variante seria la de pasar lista como puntero simple pero retornar el nodo principal en lugar de usar void.
Título: Re: Punteros Dobles en C Publicado por: GonzaloRamirez en 7 Diciembre 2019, 04:00 am Muchas gracias! ya lo logre comprender, me salvaste
Título: Re: Punteros Dobles en C Publicado por: AlbertoBSD en 7 Diciembre 2019, 06:57 am Cuando pegues codigos deberías de colocar la funte de tu codigo, ya que se nota que lo copiaste de algun lugar... , asi mismo utilizar la etiqueta de código adecuada para que salga bien indentado.
|