Manejar listas enlazadas

¿Cómo se pueden añadir datos en una posición de una lista que no sea al final, que sea donde yo quiera?
Otra pregunta:tengo por una parte un fichero con el nombre y numero de médicos, y por otra parte una lista donde se van añadiendo pacientes, y en esta lista tengo que poner el nº del medico que atenderá al paciente, ¿cómo puedo asociar esta lista al medico que atenderá al paciente?

1 Respuesta

Respuesta
1
Partiendo de la base de que tienes una lista enlazada y con un puntero que apunta al primer nodo, y cada nodo a su vez apunta al siguiente, necesitarás 3 punteros más, que llamaré aux, nuevo y siguiente:
- 'aux' recorrerá la lista hasta encontrar el que ocupa la posición deseada, y en este caso voy a suponer que quieres, por ejemplo, colocarlo en la posición anterior al nuevo nodo que quieres insertar.
- 'nuevo' es el puntero que apunta al nodo que quieres insertar, que voy a suponer que ya has hecho el new para reservar memoria y has llenado sus campos.
- 'siguiente' servirá para guardar momentáneamente la posición del resto de la lista, para no perderla mientras insertas el nuevo nodo.
El pseudocódigo sería así:
aux:= raiz; {nos colocamos en la raiz}
Mientras no encuentres la posición deseada:
aux:= aux^.siguiente;
Cuando AUX sea la posición deseada:
siguiente:= aux^.siguiente;
aux^.siguiente:= nuevo;
nuevo^.siguiente:= siguiente;
-----------------------------------
En cuanto a la lista de pacientes, lo único que tienes que hacer es buscar el nodo del paciente al que quieres asignar un médico (usando el puntero auxiliar de antes), y cuando encuentres el paciente, rellenar su campo "médico" con el número del médico que es, y si quieres buscar el nombre del médico, pues simplemente acceder al fichero y hacer una búsqueda por ese número, y saldría la información por ejemplo del médico 3.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas