1.3 Operaciones básicas con listas

Con las listas tendremos un pequeño repertorio de operaciones básicas que se pueden realizar:

  • Añadir o insertar elementos.
  • Buscar o localizar elementos.
  • Borrar elementos.
  • Moverse a través de una lista, anterior, siguiente, primero.

Cada una de estas operaciones tendrá varios casos especiales, por ejemplo, no será lo mismo insertar un nodo en una lista vacía, o al principio de una lista no vacía, o la final, o en una posición intermedia.

1.4 Insertar elementos en una lista abierta

Veremos primero los casos sencillos y finalmente construiremos un algoritmo genérico para la inserción de elementos en una lista.

Insertar un elemento en una lista vacía

Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:

Lista vacía
Lista vacía

El proceso es muy simple, bastará con que:

  1. nodo->siguiente apunte a NULL.
  2. Lista apunte a nodo.

Insertar un elemento en la primera posición de una lista

Insertar al principio
Insertar al principio

Podemos considerar el caso anterior como un caso particular de éste, la única diferencia es que en el caso anterior la lista es una lista vacía, pero siempre podemos, y debemos considerar una lista vacía como una lista.

De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso no vacía:

Insertado al principio
Insertado al principio

El proceso sigue siendo muy sencillo:

  1. Hacemos que nodo->siguiente apunte a Lista.
  2. Hacemos que Lista apunte a nodo.

Insertar un elemento en la última posición de una lista

Este es otro caso especial. Para este caso partiremos de una lista no vacía:

Insertar al final
Insertar al final

El proceso en este caso tampoco es excesivamente complicado:

  1. Necesitamos un puntero que señale al último elemento de la lista. La manera de conseguirlo es empezar por el primero y avanzar hasta que el nodo que tenga como siguiente el valor NULL.
  2. Hacer que nodo->siguiente sea NULL.
  3. Hacer que ultimo->siguiente sea nodo.
Insertado al final
Insertado al final

Insertar un elemento a continuación de un nodo cualquiera de una lista

De nuevo podemos considerar el caso anterior como un caso particular de este. Ahora el nodo "anterior" será aquel a continuación del cual insertaremos el nuevo nodo:

Insertar dentro
Insertar dentro

Suponemos que ya disponemos del nuevo nodo a insertar, apuntado por nodo, y un puntero al nodo a continuación del que lo insertaremos.

El proceso a seguir será:

  1. Hacer que nodo->siguiente señale a anterior->siguiente.
  2. Hacer que anterior->siguiente señale a nodo.
Insertado dentro
Insertado dentro

Comentarios de los usuarios (1)

william
2009-12-25 16:19:31

me podrias ayudar con un programa de un policlinico que me permita sacar un elemento de una lista y colocarla en otra lista