UTNianos

Versión completa: [Algoritmos] Punteros en procedimientos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola, gente. Vengo acá a exponer una duda puntual sobre Algoritmos para ver si me pueden ayudar.

Si en un procedimientos paso como parámetros a ColaFte y ColaFin sin el "VAR" y dentro de ese procedimiento llamo a SUPRIMIR(ColaFte, ColaFin, valor), cuando salga del procedimiento mayor la cola no se perderá, ¿cierto? ¿o se pierde igual?
Se pierde. El puntero lo que tiene es una dirección, imaginatelo como un papel con un número escrito. Si lo pasas por var el procedimiento recibe el papel y lo puede reescribir. Si lo pasás sin var, el procedimiento recibe una copia del papel, así que el papel original no va a tener cambios si el procedimiento cambia la dirección a la que apunta. EL tema es que SUPRIRMIR afecta a lo que el puntero apunta, si vos borras nodos, el "papelito" sigue teniendo escrita la misma dirección, pero el nodo que tenía esa dirección ahora vale NIL.
Para no perder los nodos serán necesarias colas auxiliares pues. Gracias, Anirus.
Una pregunta, qué intentás hacer?
si vos hacés
colaFteAuxiliar<-colaFte
colaFinAuxiliar<-colaFin
suprimir(colaFteAuxiliar, colaFinAuxiliar, valor)
los nodos se eliminan tanto de la original como la auxiliar, porque las dos hacen referencia a los mismos nodos. Si uno demuele una casa, para todo el que tenga guardada la dirección de la casa la casa va a estar demolida por igual. La diferencia está en que colaFteAuxiliar va a estar apuntando al nodo que ahora pasa a ser el primero de la cola, y ColaFte va a seguir apuntando al nodo que ahora vale NIL.

Por eso te pregunto qué intentás, porque por ahí entendí que preguntabas otra cosa y no más te estoy confundiendo.
No no, me respondiste bien. Te explico igual.

Pensaba en la posibilidad de tener que usar una cola para dos procedimientos distintos: ImprimirListado1 e ImprimirListado2.
Si quiero que la cola sobreviva para ImprimirListado2, en ImprimirListado1 no puedo destruir los nodos de la cola. Por ende, uso un puntero que recorra la cola o uso colas auxiliares.

Con colas auxiliares me refiero a esto:

cFteAux <- NIL
cFinAux <- NIL
[...]
SUPRMIR(ColaFte, ColaFin, valor)
AGREGAR(cFteAux, cFinAux, valor)
[...]
ColaFte <- cFteAux
ColaFin <- cFinAux
Ahh, eso sí se puede, no sabía que los ibas a agregar a otra cola después de quitarlos =) Pero recorrerlo con un puntero no porque deja de ser cola, aunque podrías ponerle de nombre listaFte y listaFin porque las listas admiten recorridos y las operaciones de cola y pila.
Che, voy a tener un acto de generosidad importante, y este fin de semana les voy a subir el resumen completo de algoritmos puntuales que tengo, que es un caño. Les va a servir.

PD: que feo que un alumno de industrial les tenga que subir dicho material. Muy feo he!!!!!
URLs de referencia