Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


LISTAS DINAMICAS EN PROGRAMACION DE OBJETOS, Diapositivas de Programación Lineal

Listas dinamicas en programacion de objetos

Tipo: Diapositivas

2022/2023

Subido el 28/07/2023

julian-gabriel
julian-gabriel 🇵🇪

1 documento

1 / 21

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
L I S T A S
D I N Á M I C A S
P R O G R A M A C I Ó N I
E S C U E L A P R O F E S I O N A L D E I N G E N I E R Í A
E N C O M P U T A C I Ó N E I N F O R M Á T C A
C A S I A N O Z A M B R A N O , J U L I Á N G A B R I E L
G A R C Í A C H I N C H A Y , L E O N A R D O S M I T H
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15

Vista previa parcial del texto

¡Descarga LISTAS DINAMICAS EN PROGRAMACION DE OBJETOS y más Diapositivas en PDF de Programación Lineal solo en Docsity!

L I S T A S

D I N Á M I C A S

P R O G R A M A C I Ó N I E S C U E L A P R O F E S I O N A L D E I N G E N I E R Í A E N C O M P U T A C I Ó N E I N F O R M Á T C A C A S I A N O Z A M B R A N O , J U L I Á N G A B R I E L G A R C Í A C H I N C H A Y , L E O N A R D O S M I T H

INTRODUCCIÓN Una lista lineal enlazada es un conjunto de elementos u objetos de cualquier tipo, originariamente vacía que, durante la ejecución del programa va creciendo o decreciendo elemento a elemento según las necesidades previstas. En una lista lineal cada elemento apunta al siguiente, es decir, cada elemento tiene información de dónde está el siguiente. Por este motivo también se le llama lista dinámica.

Í N D I C E D E F I N I C I Ó N

O B J E T I V O S D E L T E M A C A R A C T E R Í S T I C A S O P E R A C I O N E S B Á S I C A S C R E A R L I S T A A Ñ A D I R O I N S E R T A R E L E M E N T O S L O C A L I Z A R E L E M E N T O S B O R R A R E L E M E N T O S O R D E N A R U N A L I S T A E J E R C I C I O P R O P U E S T O

A. B. C. D. E.

1. DEFINICIÓN Una estructura de datos dinámica es aquella en la que el tamaño ocupado en memoria puede modificarse durante la ejecución del programa. De esta manera se pueden adquirir posiciones adicionales de memoria a medida que se necesiten durante la ejecución del programa y liberarlas cuando no se necesiten. Las variables que se crean y están disponibles durante la ejecución del programa se llaman variables continuas. Las estructuras de datos dinámicas se clasifican en lineales (listas, pilas y colas) y no lineales (árboles y grafos).

3. Características

La forma en que se encadenan los elementos (esto es, la forma en que se identifican el predecesor y sucesor de un elemento). Para ello se suelen utilizar los punteros. Cómo y dónde se pueden insertar y eliminar sus elementos. El número de predecesores y sucesores de cada elemento.

4. O P E R A C I O N E S

B Á S I C A S

A ) C R E A R L I S T A B ) A Ñ A D I R O I N S E R T A R E L E M E N T O S C ) L O C A L I Z A R E L E M E N T O S

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.

D ) B O R R A R E L E M E N T O S E ) O R D E N A R U N A L I S T A

elemento *nuevo_elemento(void) { elemento *q; q = (elemento *) malloc(sizeof(elemento)); if (! q) perror (“No se ha reservado memoria para el nuevo nodo”); return q; //devuelve la direcc. de memoria reservada } La función principal tomará la forma: int main () { elemento *q; //puntero a un nodo q = NULL; //lista vacía //Reserva dinámica de memoria q = nuevo_elemento (); //q apunta al nodo recién creado q->sig = NULL; //fin de lista //operaciones... //Liberación de memoria reservada free(q);

**B. Añadir o Insertar Elementos

Insertar un elemento en una lista vacía:** Equivale a crear una lista, partiendo del nodo listo a insertar (creado en la llamada a la función nuevo_elemento () ) y, por supuesto un () que apunte a él, además el () a la lista valdrá NULL. > Insertar un elemento en la primera posición de una lista:

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. Por

tanto, ahora la lista ya existe.

> Insertar un elemento en la última posición de una lista: Necesitamos un puntero que señale al último elemento de la lista. Empezando por el primero y avanzar hasta que el nodo que tenga como siguiente el valor NULL (es decir, el último). Hacer que nodo->siguiente sea NULL. Hacer que ultimo->siguiente sea nodo.

D. Borrar Elementos

Borrar todos los elementos de una lista equivale a liberar la memoria reservada para cada uno de los elementos de la misma. Si el primer nodo está apuntado por c, empleamos el puntero auxiliar q: q = c; //salvamos el puntero a la lista while (q! = NULL) { c = c->sig; free(q); q = c; } Hay que observar que antes de borrar el elemento apuntado por q, hacemos que c apunte al siguiente elemento ya que si no perdemos el resto de la lista.

E. Ordenar una lista

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 prueba añ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ón para 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

CONCLUSIONES La Programación Orientada a Objetos es actualmente el paradigma que más se utiliza para diseñar aplicaciones y programas informáticos. Son muchas sus ventajas, principalmente cuando necesitas resolver desafíos de programación complejos. Permite una mejor estructura de datos y reutilización del código, lo que facilita el ahorro de tiempo a largo plazo. Eso sí, para ello se requiere pensar bien en la estructura del programa, planificar al comienzo de la codificación, así como analizar los requisitos en clases simples y reutilizables que se pueden usar para diseñar instancias de objetos.

ANEXOS

ANEXOS

BIBLIOGRAFÍA

https://www.uv.mx/personal/ermeneses/files/2021/08/Clase5- ListasEnlazadasFinal.pdf

http://zeus.inf.ucv.cl/~rsoto/cursos/INF245/Cap2_Parte1_6ppt_INF245.p df

https://fdoperez.webs.ull.es/doc/matematicas8.pdf http://www.javalist.epizy.com/listas-dinamicas/concepto/ https://fundamentospoorrr.blogspot.com/2017/05/listas-definicion.html