Beruflich Dokumente
Kultur Dokumente
Laboratorios de computación
salas A y B
Profesor: Ing. Jonathan Roberto Torres Castillo
Grupo: 9
No de Práctica(s): 8
Semestre: 2018-II
Observaciones:
CALIFICACIÓN: _________
1
PRACTICA 8
LISTA DOBLEMENTE LIGADA Y LISTA DOBLEMENTE
LIGADA CIRCULAR
ESTRUCTURA DE DATOS Y ALGORITMOS I
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
2. Objetivos
Revisarás las definiciones, características, procedimientos y ejemplos de las estructuras lineales Lista
doblemente ligada y Lista doblemente ligada circular, con la finalidad de que comprendas sus
estructuras y puedas implementarlas.
3. Introducción
Las listas son un tipo de estructura de datos lineal y dinámica. Es lineal porque cada
elemento tiene un único predecesor y un único sucesor, y es dinámica porque su tamaño
no es fijo y se puede definir conforme se requiera. Las operaciones básicas dentro de una
lista son BUSCAR, INSERTAR Y ELIMINAR.
2
Lista doblemente ligada
Una lista doblemente ligada (o lista doble) está constituida por un conjunto de nodos
alineados de manera lineal (uno después de otro) y unidos entre sí por dos referencias,
una al sucesor (NEXT) y una al predecesor (PREV).
La unidad básica de una lista doble es el elemento o nodo. Cada elemento de la lista es un
objeto que contiene la información que se desea almacenar, así como dos referencias, una
al siguiente elemento (NEXT) y otra al elemento anterior (PREV).
4.1. Actividad 1
3
4
5
4.2. Actividad 2
En este apartado describa lo realizado y muestre ejemplos con los resultados obtenidos.
5. Código
En esta sección se presenta el código fuente del programa que permitió cumplir los
objetivos propuestos. El programa debe estar comentado en cada una de sus líneas de código
y/o en sus ciclos iterativos.
#include <stdlib.h>
#include <stdio.h>
typedef struct _nodo
{
6
int valor;
struct _nodo *siguiente;
struct _nodo *anterior;
}
tipoNodo;
typedef tipoNodo *pNodo;
typedef tipoNodo *Lista;
int i=1;
indice=inicio;
while(indice){
printf("\n\t elemento %d = %d\n",i,indice->valor);
i++;
indice=indice->siguiente;
}
system("PAUSE");
return 0;
}
nuevo = (pNodo)malloc(sizeof(tipoNodo));
nuevo->valor = v;
if(*lista == NULL){
nuevo->siguiente=NULL;
nuevo->anterior=NULL;
*lista = nuevo;
}
7
else {
nuevo->siguiente = (*lista)->siguiente;
nuevo->anterior=*lista;
(*lista)->siguiente = nuevo;
*lista=nuevo;
if(nuevo->siguiente != NULL){
nuevo->siguiente->anterior=nuevo;
}
}
8
return nodo;
6. Conclusiones
En esta práctica lo más difícil fue colocar las funciones y también al usarlas generaba unos
errores debido al acomodamiento de datos, además se tenia que buscar la manera de
acomodar los datos para poder usar bien las funciones, así como también utilizar los
apuntadores y los parámetros por referencia de las funciones.
7. Referencias
[1] GARCÍA CANO, Edgar, SOLANO GÁLVEZ, Jorge, Guía práctica de estudio #7
LISTA DOBLEMENTE LIGADA Y LISTA DOBLEMENTE LIGADA
CIRCULAR, Facultad de ingeniería, UNAM.