20260203 Colecciones_5_enlazada - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Bueno, pues habéis hecho este método
00:00:02
Ay, que listos sois, que todos sabéis
00:00:05
Vale, a ver
00:00:10
¿Cuántos habéis hecho este método?
00:00:17
Levantad la manita
00:00:22
¿Tres solo?
00:00:23
¿Cuatro?
00:00:26
Vale, ¿qué habéis hecho?
00:00:28
vale, esa es la clave, ¿no?
00:00:32
un contador, ya está, pues eso es lo que habréis
00:00:40
hecho
00:00:42
un contador
00:00:43
porque aquí hay que contar y cuando hay que contar
00:00:46
ponemos un contador igual a cero
00:00:48
y ahora nuestra variable
00:00:50
aux, esto de aquí
00:00:52
y ahora, la sentencia clave
00:00:53
está clara, es esta
00:01:05
aux igual a aux punto
00:01:06
siguiente, cada vez
00:01:09
Cada vez
00:01:12
Que avancemos
00:01:13
Cada vez que avancemos
00:01:15
Incrementamos un contador
00:01:18
Cada vez que avancemos
00:01:19
Y ahora
00:01:23
¿Cuántas veces tenemos que avanzar?
00:01:23
Antes la avanzábamos tantas veces como me decía posición
00:01:25
Ahora la tengo que avanzar
00:01:28
Hasta el final
00:01:30
Entonces ahora la tengo que avanzar
00:01:31
Mientras aux
00:01:33
Sea distinta de null
00:01:35
Mientras no haya llegado
00:01:37
Al final, avánzamela
00:01:40
¿Vale? Mientras no haya llegado al final
00:01:41
Avanzala
00:01:45
Cuando hayas llegado al final
00:01:46
Ya no hay más que avanzar
00:01:48
Ya me has contado todas las posiciones
00:01:50
Pues la devuelves
00:01:51
¿Vale?
00:01:54
Entonces ahora ya sí
00:02:03
Ahora ya sí
00:02:04
Podríamos recorrerlo
00:02:07
Con el for
00:02:08
Que es la idea
00:02:10
¿Vale? Recorrerlo con el for
00:02:11
Esto ya nos funcionaría
00:02:15
Bueno pues
00:02:17
tenemos una estructura muy
00:02:23
cómoda, que uno la puede
00:02:25
distribuir, la mete en un jar y la distribuye
00:02:27
y ahora ya cualquiera
00:02:30
la puede usar para meter cadenas de forma
00:02:31
cómoda y consultar, ni array
00:02:33
que se rompe y hay que hacerlo
00:02:36
ni nada, me hago mi array linked list
00:02:37
inserto según me vaya
00:02:40
haciendo falta y recorro
00:02:41
¿vale? a ver
00:02:44
le faltan funcionalidades
00:02:45
vamos a dejar planteada la del remove
00:02:47
para que la hagáis
00:02:49
la del remove
00:02:51
Porque claro, yo he hecho una estructura en la cual puedo insertar en la lista, solo al principio, eso sí, podríais hacer la variante e insertar al final, solo al principio, puedo recuperar por posición y ya está, no puedo hacer más que eso, insertar y recuperar lo que hay en una posición.
00:02:53
Pero bueno, me gustaría también quitar cosas. Lo que hacemos con los contenedores de cosas es meter cosas, consultar lo que hay por posición o por clave, si es un diccionario, pero si es otra historia, y sacar alguna.
00:03:11
vale
00:03:29
bueno pues
00:03:30
como haríamos aquí un método remove
00:03:32
pues tendríamos que
00:03:34
incorporar algo parecido
00:03:36
a esto por ejemplo
00:03:39
remove
00:03:40
int por posición
00:03:42
y ahora
00:03:44
os
00:03:52
vemos aquí la pista en la pizarra
00:03:54
para que lo hagáis este ya vosotros
00:03:56
vale
00:03:58
aquí
00:04:09
si lo utilizamos esta lista
00:04:10
¿cuál es la operación que tenemos que hacer
00:04:21
para eliminar este de aquí, por ejemplo
00:04:24
para eliminar a este pobre de aquí
00:04:27
el de posición 1 en este caso
00:04:30
pues la única sentencia que hay que hacer
00:04:33
esto es más fácil que el array, que ya hemos visto que había que hacer otro array
00:04:36
con una menos, copiar, pegar, aquí es tan fácil como
00:04:39
a esta de aquí
00:04:42
asignarle
00:04:44
su siguiente
00:04:46
y punto pelota
00:04:48
¿vale? a esta
00:04:50
asignarle su siguiente
00:04:52
entonces he puenteado a este
00:04:54
este se ha quedado sin referencia
00:04:56
ha perdido la que tenía
00:04:59
se ha quedado sin referencia
00:05:00
y el recolector de basura en algún momento
00:05:02
lo tirará a la basura
00:05:04
esta es la que hay que hacer
00:05:05
entonces si yo tengo
00:05:08
un puntero aux, si yo tuviera un puntero aux
00:05:10
que apuntara a este
00:05:12
Pues el borrado sería precisamente hacer aux.siguiente, aux.siguiente, igual aux.siguiente.siguiente.
00:05:13
Es decir, esta sería la sentencia de borrado.
00:05:35
Siempre y cuando aux apunte al anterior al que yo quiero borrar.
00:05:40
si quiero borrar este
00:05:45
aux tiene que apuntar
00:05:47
al anterior al que quiero borrar
00:05:50
una vez que consiga
00:05:51
que aux apunte al anterior
00:05:54
al que quiero borrar
00:05:56
hago esta sentencia, aux.siguiente
00:05:57
que es este, por favor apúntame
00:06:00
aux.siguiente, el punto siguiente
00:06:02
que es este
00:06:03
entonces lo que tengo que hacer en el remove es
00:06:04
un bucle, primero hacerme mi auxiliar
00:06:07
por supuesto
00:06:10
un bucle que va avanzando aux
00:06:10
hasta que llegue
00:06:13
a una posición menos
00:06:15
que el que quiero borrar.
00:06:17
Un bucle, un contador
00:06:19
que en lugar de posición
00:06:21
se ejecute posición menos una vez.
00:06:22
Y una vez que ya ha llegado
00:06:25
me hace esta sentencia con aus
00:06:27
y se acabó.
00:06:29
Y ese sería el remove.
00:06:31
Si hacemos el remove
00:06:33
y luego volvéis a recorrer
00:06:34
con el get y el for
00:06:35
pues veréis que efectivamente
00:06:37
se ha eliminado.
00:06:38
¿Vale?
00:06:40
Entonces, eliminar de una lista enlazada
00:06:41
es
00:06:43
esta línea
00:06:44
eliminar un array es mucho más
00:06:47
entonces computacionalmente
00:06:49
es más costoso, son mucho más ciclos
00:06:52
de memoria, trabajar con
00:06:54
un array para eliminar e insertar que
00:06:56
trabajar con una lista enlazada
00:06:58
¿vale? y si quisierais
00:06:59
hacer en la lista, va a haber una lista súper
00:07:14
completa, añadir al
00:07:16
final, el remove está claro ¿no?
00:07:18
un aux, aux que
00:07:20
avance hasta pararse al
00:07:22
anterior a la posición que quiero
00:07:24
vamos a un for que lo va avanzando
00:07:25
y luego esta sentencia, se acabó
00:07:28
ese sería el remove
00:07:30
que queréis hacer el add
00:07:31
sin más, añadir al final, no añadir al principio
00:07:33
que parece raro, ¿no?
00:07:36
normalmente cuando uno añade a una colección
00:07:37
a una lista, añade al final
00:07:40
pues si quisierais
00:07:41
hacer el método, que lo vamos a dejar ahí
00:07:44
escrito, para que lo hagáis
00:07:46
de añadir al final
00:07:48
¿qué habría que hacer en el añadir al final?
00:07:49
pues tendríamos que
00:07:54
crear el nuevo nodo, sí o sí, por supuesto
00:07:58
crear el nuevo nodo, con el dato
00:08:01
que me han dado nuevo
00:08:03
inicialmente, siguiente
00:08:04
anul, ahora este
00:08:07
nuevo nodo, lo tengo que hacer
00:08:09
colgar de aquí
00:08:11
no insertar aquí
00:08:12
bueno, pues no pasa nada, me hago yo
00:08:15
un aux, que avance hasta el
00:08:17
final, hasta
00:08:19
este, y cuando ya lo tengo
00:08:21
me hago, aux
00:08:23
punto siguiente igual al nodo nuevo
00:08:25
al nodo nuevo que acabo de hacer
00:08:27
con lo cual este siguiente
00:08:29
empezará a apuntar al nodo nuevo
00:08:31
¿vale?
00:08:33
entonces repito
00:08:36
¿qué habremos tenido que hacer para añadir al final?
00:08:37
una variable
00:08:40
aux que va avanzando con la
00:08:41
sentencia de avance, aux igual aux punto siguiente
00:08:43
va avanzando hasta que
00:08:45
se quede apuntando al último
00:08:47
no hasta que se quede apuntando
00:08:49
al último, sino al último
00:08:51
al último
00:08:52
una vez que está apuntando al último
00:08:53
aux.siguiente
00:08:56
igual al nodo nuevo, y ya está
00:08:58
con lo cual aux.siguiente
00:09:00
se quedará apuntando al nodo nuevo
00:09:03
con eso podría hacer
00:09:04
añadir al final
00:09:06
¿y el parámetro que pasa por la posición o el dato?
00:09:07
el parámetro o el dato
00:09:14
el dato, el dato, ¿vale?
00:09:15
entonces, la cabecera del este
00:09:18
sería
00:09:20
entonces este método
00:09:21
pues se queda ahí
00:09:37
para que lo hagáis
00:09:38
¿cuáles dos más
00:09:40
hemos mencionado?
00:09:43
bueno, hemos mencionado uno más, el de añadir
00:09:45
al final, pues public
00:09:47
void add
00:09:51
add sin más
00:09:53
un dato
00:09:55
add last, añádeme
00:09:57
add first, perdón
00:10:04
este sería el añadir por defecto cuando tú ya
00:10:05
es una lista, añades al final.
00:10:08
Hemos hecho añade al principio.
00:10:10
Ahora queremos añadir al final.
00:10:12
Pues venga.
00:10:16
Una cosa es añadir al principio.
00:10:20
A ver, en una lista las cosas tienen orden.
00:10:21
Luego no es igual estar aquí que estar aquí.
00:10:24
Ya tienen posición.
00:10:26
En esta lista no da igual el orden, ¿no?
00:10:27
Yo he dicho que da igual el orden.
00:10:29
Yo he dicho que si me hago mi método addFirst,
00:10:31
tal y como lo he hecho, que es una versión sencilla,
00:10:33
me lo mete al principio.
00:10:35
entonces tú puedes
00:10:36
querer añadir en la lista
00:10:41
puedes querer colocar al final o puedes
00:10:43
querer insertar por el principio, te da
00:10:45
las dos opciones, tú colocas
00:10:47
como quieras, venga pues ahora
00:10:49
que tenéis el cerebro caliente
00:10:52
y el corazón frío
00:10:53
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 1
- Fecha:
- 7 de febrero de 2026 - 18:44
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 10′ 57″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 261.62 MBytes