Algoritmos

Páginas: 3 (716 palabras) Publicado: 7 de noviembre de 2012
1.9 Ejemplo de lista abierta ordenada en C
Supongamos que queremos construir una lista para almacenar números enteros, pero de modo que siempre esté ordenada de menor a mayor. Para hacer la pruebaañadiremos los valores 20, 10, 40, 30. De este modo tendremos todos los casos posibles. Al comenzar, el primer elemento se introducirá en una lista vacía, el segundo se insertará en la primera posición,el tercero en la última, y el último en una posición intermedia.
Insertar un elemento en una lista vacía es equivalente a insertarlo en la primera posición. De modo que no incluiremos una funciónpara asignar un elemento en una lista vacía, y haremos que la función para insertar en la primera posición nos sirva para ese caso también.
Algoritmo de inserción
El primer paso es crear un nodo parael dato que vamos a insertar.
1. Si Lista es NULL, o el valor del primer elemento de la lista es mayor que el del nuevo, insertaremos el nuevo nodo en la primera posición de la lista.
2. Encaso contrario, buscaremos el lugar adecuado para la inserción, tenemos un puntero "anterior". Lo inicializamos con el valor de Lista, y avanzaremos mientras anterior->siguiente no sea NULL y el datoque contiene anterior->siguiente sea menor o igual que el dato que queremos insertar.
3. Ahora ya tenemos anterior señalando al nodo adecuado, así que insertamos el nuevo nodo a continuaciónde él.
4. void Insertar(Lista *lista, int v) \{
5. pNodo nuevo, anterior;
6.
7. /* Crear un nodo nuevo */
8. nuevo = (pNodo)malloc(sizeof(tipoNodo));
9.nuevo->valor = v;
10.
11. /* Si la lista está vacía */
12. if(ListaVacia(*lista) || (*lista)->valor > v) \{
13. /* Añadimos la lista a continuación del nuevo nodo */14. nuevo->siguiente = *lista;
15. /* Ahora, el comienzo de nuestra lista es en nuevo nodo */
16. *lista = nuevo;
17. } else \{
18. /* Buscar el nodo...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Algoritmo
  • Algoritmo
  • Algoritmos
  • Algoritmos
  • Algoritmos
  • Algoritmos
  • Algoritmos
  • Algoritmos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS