Otros tipos de listas Curso de Introducción a la Computación.

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
Advertisements

ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Estructuras de datos y algoritmos
Estructura de Datos En C++
Repaso para la construcción del intérprete 2012
Elementos básicos del Lenguaje
Operaciones sobre un árbol
PROGRAMACION DE Pilas o Stacks y Colas
Algoritmos Aleatorizados
Introducción a la Programación
 Funciones predefinidas en las listas Se puede definir rangos en las listas. Ejemplo: [1..10] que es la lista del 1 hasta el 10 El operador ++ concatena.
Árboles balanceados AVL
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Colas y Listas Enlazadas
REPRESENTACIÓN GRÁFICA DE ALGORITMOS
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Listas circulares.
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
Introducción a la Programación “Conceptos de Algoritmo”
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
La Pila o Stack Programación. La pila (stack) es una estructura ordenada de elementos en la que se pueden insertar o remover elementos por un extremo.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Listas enlazadas.
El lenguaje de programación C - Identificadores y variables – Isidro González Caballero ( Introducción.
Pilas y Colas Estructuras de Datos.
COLAS Curso de Introducción a la Computación. Colas La cola es una colección ordenada de elementos de la que se pueden borrar elementos en un extremo.
LISTA DOBLEMENTE ENLAZADA
Graficación II. Algoritmos.
Computación I Primer Semestre 2006 Capítulo IV Ciclos y Colecciones (con un sabor a algoritmos)
ÁRBOLES Curso de Introducción a la Computación. Árboles binarios Un árbol binario es un conjunto de elementos que o está vacío o está dividido en tres.
Planteos Recursivos Resolución de Problemas y Algoritmos
Introducción Lenguaje de Programación ING2101 SECC Ayud. Ariel Fierro Sáez.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Elementos básicos del lenguaje
Diseño de Algoritmos. Curso J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho:
Algoritmos de Ordenamiento y Complejidad
“Introduzca dos Valores Distintos”
Unidad 4: LISTAS.
1 Tablas HASH Agustín J. González ELO320: Estructura de Datos y Algoritmos.
LISTA ENCADENADAS. DEFINICIÓN Las listas están formadas por una serie de nodos; cada nodo tienen un campo de información y un apuntador (puntero) al siguiente.
Punteros, referencias Listas enlazadas Arboles
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INSTITUTO TECNOLOGICO DE APIZACO
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
PRINCIPIOS DE PROGRAMACIÓN
Estructuras con punteros: Nodos y Listas. Un programa C.
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
Lic. En C.C. Ann Margareth Meza Rodríguez
Árboles Binarios de Búsqueda (ABB)
IMPLEMENTACION DE COLAS MEDIANTE LISTAS
Lic. En C.C. Ann Margareth Meza Rodríguez
Estructura de Datos..
Pilas y Colas Cursos Propedéuticos 2006 Programación y Estructuras de Datos Manuel Montes Claudia Feregrino
PROGRAMACION DE Pilas o Stacks

Laboratorio de programación
PROGRAMACION DE Pilas o Stacks y Colas
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Listas Dinámicas.
UNIDAD 8 Lista Enlazada: Eliminar Deseamos eliminar un elemento llamado elem de la lista enlazada. Es posible que la variable ini sea modificada. main(){
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Otros tipos de listas Curso de Introducción a la Computación

Listas circulares Una lista circular es aquella en la que el último nodo apunta al primero. list Primer nodo Ultimo nodo

Prueba de fin de lista Para probar si ya se llegó al final de la lista se debe probar la condición: next(p) == list La inserción y eliminación de nodos debe garantizar que el nodo final debe apuntar al inicio de la lista.

Longitud de una lista circular Como ejemplo de operación de listas circulares considere determinar el número de elementos de una lista circular. FUNCIÓN LEN(LISTA_CIRCULAR) 1. COUNT <= 0 2. SI LISTA_CIRCULAR != NULL ENTONCES 3. P = LISTA_CIRCULAR 4. HACER 5. COUNT <= COUNT P <= NEXT(P) 7. MIENTRAS P!= LISTA_CIRCULAR 8. REGRESAR COUNT

OPERACIÓN PUSH Para poder insertar a la cabeza de una lista circular es necesario recorrer toda la lista hasta el final. list

Algoritmo DELAFTER para una lista circular Algoritmo para eliminar el nodo después del nodo P. SUBRUTINA DELAFTER(P:APUNTADOR;X:..) 1. SI P=NIL OR P=NEXT(P) ENTONCES a. ERROR " ELIMINACIÓN INVÁLIDA" 2 Q  NEXT(P) 3. X  INFO(Q) 4. NEXT(P)  NEXT(Q) 5. FREENODE(Q) list P Q X = INFO(Q)

Apuntador al final de una lista circular Se pueden resolver algunos de los problemas de listas circulares haciendo que el apuntador de una lista circular apunte al último nodo en vez de al primero. list Primer nodo Ultimo nodo

Algoritmo para concatenar dos listas circulares SUBRUTINA CONCAT(LIST2:APUNTADOR;LIST1:APUNTADOR) 1. SI LIST1=NIL ENTONCES a. REGRESAR 2. SI LIST2=NIL ENTONCES a. LIST1  LIST2 a. REGRESAR 3. P  NEXT(LIST1) 4. NEXT(LIST1)  NEXT(LIST2) 5. NEXT(LIST2)  P 6. LIST1  LIST2 LIST1 LIST2 P LIST1 1 La concatenación de listas puede hacerse sin recorrer toda la lista.

Suma de números grandes Podemos representar números positivos grandes con listas circulares. Usaremos un nodo cabecera con un valor especial (-1) para reconocer el inicio o final del número. Los números se almacenarán en orden inverso, es decir, primero los dígitos menos significativos y así sucesivamente se almacenará como:

Función para sumar dos enteros largos int addint(int p, int q){ long hunthou = 10000L; long carry, number, total; int s; //asignar a p y q los siguientes nodos a los nodos cabecera p = node[p].next; q = node[q].next; //preparar nodo cabecera para la suma s = getnode(); node[s].info = -1; node[s].next = s; carry = 0;

while(node[p].info!=-1&&node[q].info!=-1){ //sumar los dos nodos y el acarreo total = node[p].info+node[q].info+carry; //truncar e insertar en la lista number = total%hunthou; insafter(s,number); //avanza apuntadores s = node[s].next; p = node[p].next; q = node[q].next; //calcula acarreo carry = total/hunthou; }

//se procesan nodos restantes while(node[p].info!=-1){ total = node[p].info+carry; number = total%hunthou; insafter(s,number); s = node[s].next; p = node[p].next; } while(node[q].info!=-1){ total = node[q].info+carry; number = total%hunthou; insafter(s,number); s = node[s].next; p = node[q].next; }

//si hay acarreo, inserta if(carry==1){ insafter(s,carry); s = node[s].next; } return node[s].next; }