+ Archivos en C
+ Estructuras en C
+ Graficos en C
+ Metodo de ordenacion Burbuja
>> Punteros en C
* Apuntadores en C
* Aritmetica en C
* Funciones en C
* Estructuras en C
>> Listas enlazadas en C
+ Tecnologias de almacenamiento
+ Turbo C basico 1
Listas enlazadas (Nodos)
+ Estructuras en C
+ Graficos en C
+ Metodo de ordenacion Burbuja
>> Punteros en C
* Apuntadores en C
* Aritmetica en C
* Funciones en C
* Estructuras en C
>> Listas enlazadas en C
+ Tecnologias de almacenamiento
+ Turbo C basico 1
Listas enlazadas (Nodos)
- Una lista es una colección de elementos llamados generalmente nodos. El orden entre los nodos se establece por medio de punteros, es decir, direcciones o referencias a otros nodos.
- En general, un nodo consta de dos partes:
- Un campo INFORMACION que será del tipo de datos que se quiera almacenar en una lista.
- Un campo LIGA, de tipo puntero, que se utiliza para establecer la liga o el enlace con otro nodo de la lista. Si el nodo fuera el último de la lista, este campo tendrá como valor: NIL (vacÃÂo). Al emplearse el campo liga para relacionar dos nodos, no será necesario almacenar fÃÂsicamente a los nodos en espacios contiguos.
- Las operaciones que pueden llevarse a cabo en una lista son:
- Recorrido de la lista.
- Inserción de un elemento.
- Borrado de un elemento.
- Búsqueda de un elemento.

{Este algoritmo crea una lista, agregando cada nuevo nodo al FINAL de la misma. P y Q son variables de tipo puntero. P apuntará al inicio de la lista}
1. CREA(P)
2. Leer P^.INFORMACION
3. Hacer P^.LIGA = NIL Y T = P
4. Repetir
CREA(Q)
Leer Q^.INFORMACION
Hacer Q^.LIGA = NIL, T^.LIGA = Q y T = Q
5. Hasta (que ya no haya información)
RECORRECURSIVO (P)
{Este algoritmo recorre una lista recursivamente. P es el apuntador al nodo a visitar}
1. Si P <> NIL entonces
Escribir P^.INFORMACION
Llamar a RECORRECURSIVO con P^.LIGA
{Llamada recursiva con el apuntador al siguiente nodo de la lista}
{Fin del condicional del paso 1}
ELIMINAULTIMO(P)
{Este algoritmo borra el último elemento de una lista. P es el apuntador al primer nodo de la lista}
{Q y T son variables de tipo puntero}
1. Si P^.LIGA = NIL entonces {Verifica si la lista tiene sólo un elemento}
QUITA (P)
Hacer P = NIL
si no
Hacer Q = P
1.1 Repetir mientras (Q^.LIGA <> NIL)
Hacer T = Q y Q = Q^.LIGA
1.2 {Fin del condicional del paso 1.1}
Hacer T^.LIGA = NIL
QUITA (Q)
2. {Fin del condicional del paso 1}
Ejemplo 1
-
#include<stdio.h>
#include<conio.h>
struct lista
{
char info[20];
struct lista *liga;
};
struct lista *inicio, *final, *nuevo, *temporal
contador = contador + 1;
printf("Introduce un Nombre: ");
scanf("%s",&datos);
if (contador==1)
{
inicio=(struct lista*)malloc(sizeof(struct lista));
strcpy(inicio->info,datos);
inicio->liga=NULL;
final=inicio;
}
if (contador>1)
{
temp3=inicio;
while(temp3->liga!=NULL)
temp3=temp3->liga;
temporal=(struct lista*)malloc(sizeof(struct lista));
strcpy(temporal->info,datos);
temporal->liga=NULL;
temp3->liga=temporal;
}
Ejemplo 2
-
// Programa que crea nodos al final de una lista y muestra
// su contenido
// Gerardo C rdenas - U de C
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <
struct lista //Declaracion de la estructura
{
char info[20];
struct lista *liga;
};
struct lista *inicio, *temp1, *temp2;
main()
{
char datos[20],k; //Variables locales
int contador;
contador = 0;
clrscr();
do
{
printf("Escriba un nombre --> ");
gets(datos);
contador++;
if (contador==1) // Si el nodo es el primero
{
inicio = (struct lista*)malloc(sizeof(struct lista));
strcpy(inicio->info,datos);
inicio->liga = NULL;
}
else // Si ya existe al menos un nodo
{
temp1 = inicio;
while(temp1->liga!=NULL)
temp1 = temp1->liga;
temp2 = (struct lista*)malloc(sizeof(struct lista));
strcpy(temp2->info,datos);
temp2->liga=NULL;
temp1->liga=temp2;
}
printf("Otro nombre [S/N]?");
k=toupper(getch());
} while (k!='N');
printf("\n\nElementos de la lista\n");
temp1 = inicio; // Mostrar el contenido de la lista
while (temp1->liga!=NULL)
{
printf(" %s ",temp1->info);
temp1 = temp1->liga;
}
printf("%s ",temp1->info); // Muestra el £ltimo elemento
getch();
}