![]() |
Operaciones basiscas listas doblemente enlazadas circulares
Hola, me haria un gran favor si alguien me facilitara el codigo de todas las operaciones que hay.
Tengo que hacer una parte de una practica con estas listas y no encuentro las operaciones por ningun lado para poder continuarla. De paso tengo otra consulta. En delphi al poner un tMemo para que muestre un listado hay alguna manera para recalcar en negrita los campos que yo creo? Nombre: que aparezca en negrita. Saludos y gracias |
Cita:
http://www.google.es/search?hl=es&q=...n+Google&meta= Con una revisión superficial, comprobarás que en las cuatro primeras entradas ya tienes código para implantar las listas doblemente enlazadas. Un poco de picardía con Google no te hubiese venido mal :) Saludos |
Hola,
las operaciones basicas por ejemplo las de los arboles o de la tabla hash las saque de apuntes de clase de otros años (las daban y explicaban) por lo tanto no fusilo nada, no crees??. Las operaciones de listas doblemente enlazadas si que las tengo y como bien dices, en google buscando salen (ya busque y requetebusque antes de poner mi duda,). El caso que no se bien la diferencia cuando es circular en cuanto a los procedimientos de las operaciones y por eso buscaba dichas operaciones que tampoco creo que sea tan grave, ni que pidiera el alta de un cd ya hecha ;-). De doblemente enlazada a doblemente enlazada circular la diferencia donde reside en las operaciones?? En los tipos se la diferencia y se que son ambas listas pero siempre nos piden doblemente enlazada, lo de circular nunca lo explican. un saludo y gracias por tu ayuda |
Por circular, creo entender que se muerde la cola :D
Es decir, el último elemento apunta al primero de la lista, así que hay que saber de antemano cuantos elementos hay en la lista para realizar una búsqueda. En listas (no circulares) simplemente haces un bucle hasta que aux^.siguiente = nil. Suponiendo que "siguiente" es un puntero al siguiente elemento de la lista, el último elemento tendrá nil (puntero nulo, vacío) y por tanto se tiene una condición de parada. saludos |
Osea que los tipos de la lista doblemente enlazada circular y la no circular son iguales, no? Saludos y gracias |
Exacto.
Lo que cambia es la filosofía de trabajo, vamos a Buscar un elemento concreto: - No circular Recorremos desde el principio hasta que aux^.siguiente = nil. Si no encontramos lo que buscamos, paramos. - Circular. Ahora todos los aux^.Siguiente tienen un valor, ya que el último de la lista apunta al primero. La condición de parada no la podemos usar, entonces ¿como sabemos que hemos recorrido todos los elementos? Cada vez que se añade/borra un elemento a la lista, incrementamos/decrementamos un contador, y ya podemos hacer: For i:=1 to contador do Saludos |
Vale, creo que lo voy pillando. Era justo la mayor duda que tenia. Me va a tocar sufrir de lo lindo, eso esta claro.
Gracias por tus ayudas!! Saludos |
Cita:
Cita:
Así pues, si te sientes ofendido, lo siento, pero yo no invento nada, lo que pediste está escrito. |
Cita:
O también con punteros "fijos" al primer y último elemento (caso de utilizarse estructuras dinámicas) Saludos. |
Hola! tanto listas doblemente enlazadas circulares o no..podes guardar el 1er elemento y el ultimo. Asi sabrias en la circular la condicion de fin de la lista es cuando llegue al primero..En cuanto a la implementación lo podrias implementar con punteros o array de registros guardas: sig, ant, dato, donde sig y ant son posiciones aleatorias del array...donde tienen un orden logico..pero no fisico:rolleyes: . Con respectos a las operaciones pueden ser:
- Crear Lista. - Recorrer e imprimir la lista. - Obtener primero - Obtener Ultimo. - Insertar en una posicion. - Agregar. - Borrar un elemento determinado. - Borrar un elemento de una posicion. - Si es vacia. - Cantidad de Elementos. etc.. Exitos con las estructuras de datos! LA PATRIA SERA LIBRE! |
Cita:
No pido que se me explique las diferencias porque esperaba con el codigo en mano compararlo con las doblemente enlazadas y yo mismo ver las diferencias. No pregunto algo que puedo averiguar, igual la forma de averiguarlo no es la mas adecuada pero que le vamos a hacer, nadie es perfecto y de hecho asi comparo las operaciones de las listas simples y las enlazadas por ejemplo. Cita:
Cita:
Que borre un elemento determinado y lo vuelva a insertar nuevo?? Saludos y nuevamente gracias a todos |
Si te piden modificar.... se supone que tienes que modificar el contenido de Telem, por tanto solo tienes que buscar y despues sobreescribir el Telem, es decir, operaciones de punteros.... ninguna :)
Saludos |
Es que por ejemplo con arboles la operacion modificar la tenfo implementada entonces lo que hago es meter los datos y modificarlos y si la clave la cambio (deja cambiarla) lo que hago es eliminar el arbol y crearlo de nuevo.
Entonces con lista circular uso la operacion buscarnodo y directmanete pense en borrar ese nodo y volverlo a crear por lo que los datos serian modificados. Perdona mi ignorancia pero como sobreescribirias el los datos?? Saludos y gracias |
Claro..como dice el compañero. Accedes al elemento a modificar(buscas el nodo) y modificas el dato.. aux^.dato:=..., o borrado seguido de inserccion como te guste mas.
saludoss LA PATRIA SERA LIBRE! |
Cita:
Y si es necesario explicar las diferencias entre los tipos de listas se explican, que aquí encontrarás a muchos dispuestos a hacerlo. Además, estos temas genéricos de algoritmos y programación son siempre muy interesantes. Un saludo. |
Interesante y útiles. Cuando empecé a trabajar con delphi y vi la clase TList, me sorprendió que usara punteros a diestro y siniestro, pero en lugar de asustarme, la estudié a fondo. El tema de punteros me gustó mucho en la carrera jejeje.
Saludos |
Cita:
Tengo alguna duda mas ahora mismo sobre otros temas (pero son minucias), que es mejor abrir otro post o preguntarlas en este mismo?? Saludos y gracias a todos |
La franja horaria es GMT +2. Ahora son las 09:34:28. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi