Estructuras PILA - COLA - LISTA.

Slides:



Advertisements
Presentaciones similares
Definición Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que.
Advertisements

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.
Programación II Listas
INFORMATICA I Funciones CLASE 13.
Tratamiento de listas en Java
PROGRAMACION DE Pilas o Stacks y Colas
Implementación de Listas
Estructuras de Datos Especificación formal de Listas.
Estructuras de datos M.I.A Daniel Alejandro García López.
Programación II Colas Igor Santos Grueiro.
Colas y Listas Enlazadas
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Pila1UVM Colas. Pila2UVM Pila3UVM 3.1 Objetivos El estudiante manejará el tad Cola, sobre memoria estática.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Archivos Programación.
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Archivos.
Pilas y Colas Estructuras de Datos.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Ayudantia 3: Pilas- Colas
LENGUAJE “C” Programación.
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
PROGRAMACION DE Pilas o Stacks y Colas
Listas Dinámicas.
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.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: COLAS.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Introducción a punteros en C
Estructura de Datos Luis Humeau Waldi Saturno
L ISTAS ENLAZADAS M.IA. Daniel Alejandro García López.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Funciones en lenguaje C 2 Funciones Definición: – Las funciones son los bloques de construcción básicos de C. Dentro de ellas se da toda la actividad.
Árboles binarios. Algoritmos básicos
Listas enlazadas particulares
LISTAS..
Estructuras de datos y algoritmos
Variables Automáticas y Apuntadores
Listas Dinámicas.
Aprendiendo Java Pilas y Colas Por Juan Astudillo.
LENGUAJE DE PROGRAMACION III Estructuras Estáticas de Datos
Introducción a las estructuras de datos
LENGUAJE DE PROGRAMACION “PILAS”
Ingeniero en Computación José Alfredo Cobián Campos
Estructuras de control Resolución de problemas y algoritmos
EL TDA COLA Estructuras de Datos. DEFINICION Abunda este concepto, en la vida cotidiana Cuando vamos al cine, para comprar las entradas Cuando estamos.
PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
PILAS Y COLAS INTEGRANTES: JAVIER GONZALEZ JORGE LUIS SOLIS ISAC FERNANDEZ.
PILAS Y COLAS INTEGRANTES: JAVIER GONZALEZ JORGE LUIS SOLIS ISAC FERNANDEZ.
Árboles clase 6 Apoyo de Práctica. Resumen ●Árboles ○Concepto ○Características ○Dinámica ○Recorridos o barridos. ●Ejercicio Sugerido.
Características de “C”
Pilas y Colas Fundamentos.
Manuel Montes y Gómez Laboratorio de Tecnologías del Lenguaje
Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2018
Fundamentos de Informática Especialidad de Electrónica –
Estructuras Dinámicas
EL TDA COLA Estructuras de Datos.
Listas ligadas Dra. María de Lourdes López García
UNIDAD 8 Agregar al Inicio
Árboles Binarios Estructuras de Datos.
Pilas y colas. República Bolivariana de Venezuela.
COLAS O LINEA DE ESPERA EN C# SHARP. ¿QUE ES UNA COLA O LINEA DE ESPERA?  Es una estructura de datos que almacena elemento en una lista y permite acceder.
Árboles Binarios Estructuras de Datos. Las estructuras dinámicas son las en la ejecución varia el número de elementos y uso de memoria a lo largo del.
Departamento de Ingeniería de Sistemas e Industrial
Transcripción de la presentación:

Estructuras PILA - COLA - LISTA

PILAS Operaciones APILAR DESAPILAR Una pila es una estructura de datos de acceso restrictivo a sus elementos. Es una estructura de tipo LIFO (Last In First Out), es decir, último en entrar, primero en salir. 5 4 3 2 1 Operaciones APILAR DESAPILAR

Pilas - codificación Declaración struct tpila { int cima; int elementos[MAX_PILA]; } pila; Procedimiento de creación void crear( ) { pila.cima = -1; }

Pilas - codificación Función que devuelve 1 si la pila esta vacía int vacia() { int r=0; if (pila.cima ==-1) r=1; return r; } Función que devuelve 1 si la pila esta llena int llena () { int r=0; if (pila.cima == (MAX_PILA-1)) r=1; return r; }

Pilas – codificación Procedimiento de apilado void apilar (int elem) { pila.elementos [++pila.cima] = elem; } Procedimiento de desapilado int desapilar () { int ele; ele= pila.elementos [pila.cima]; pila.elementos [pila.cima]=0; -- pila.cima; return ele; }

Pilas – codificación Procedimiento de mostrar una pila. void mostrar() { int ele,vec[5],c,i=-1; while (vacia()!=1){ ele= desapilar(); i++; vec[i]=ele; printf(“\t %d\t”,ele); } for(c=i;c>=0;c--)apilar(vec[c]);

Programa de ejemplo /* programa tipo de pila */ int main () { int elem, op,i; crear(); printf("pila creada\n"); do{ printf ("1.Apilar\n 2. Desapilar\n 3. Salir\n"); scanf("%d",&op); switch (op) { case 1: printf ("Ingrese un numero"); scanf("%d",&elem); apilar(elem); break; case 2: elem = desapilar(); printf("\n elemento desapilado %d",elem); case 3: break; } if (vacia()) printf ("\n pila vacia"); if (llena()) printf ("\n pila llena"); printf ("\n\n PILA...."); mostrar(); } while (op!=3); /* programa tipo de pila */ #include <stdio.h> #include <conio.h> void crear(); int vacia(); int llena(); void apilar (int elem); int desapilar (); void vostrar(); struct tpila { int cima; int elemento[5]; } pila; Programa de ejemplo

Colas Una cola es una estructura de datos de acceso restrictivo a sus elementos Es una estructra de tipo FIFO (First In First Out), es decir: primero en entrar, primero en salir. Operaciones ENCOLAR DESENCOLAR Se encola 3 números 3,1,4 1 2 3 4 5 Se desencola un número (3) Se encola un número (7)

Colas - codificación Declaración struct tcola { int elems; int entrada, salida; int elemento[max_cola]; } cola; Procedimiento de creación void crear() { cola.elems = 0; cola.salida =cola.entrada = 0; }

Colas - codificación Función que devuelve 1 si la cola esta vacía int vacia() { int r=0; if (cola.elems ==0) r=1; return r; } Función que devuelve 1 si la cola esta llena int llena () { int r=0; if (cola.elems ==max_cola) r=1; return r; }

Colas – codificación Procedimiento de encolar void encolar (int elem) { cola.elems++; cola.elemento[cola.entrada++] = elem; if (cola.entrada == max_cola) cola.entrada =0; } Procedimiento de desencolar int desencolar () { int ele; if (vacia()!=1){ cola.elems--; ele= cola.elemento [cola.salida]; cola.elemento[cola.salida]=0; cola.salida++; if (cola.salida == max_cola) cola.salida =0;} else printf(“no hay elementos”); return ele; }

Programa de ejemplo /* programa tipo de cola cricular */ int main () { int elem, op,i; crear(); printf("cola creada\n"); do{ printf ("1.Encolar\n 2. Desencolar \n 3. Salir\n"); scanf("%d",&op); switch (op) { case 1: printf ("Ingrese un numero"); scanf("%d",&elem); encolar(elem); break; case 2: elem = desencolar(); printf("\n elemento desapilado %d",elem); case 3: break; } if (vacia()) printf ("\n cola vacia"); if (llena()) printf ("\n cola llena"); printf ("\n\nCOLA....\n"); mostrar(); } while (op!=3); /* programa tipo de cola cricular */ #include <stdio.h> #include <conio.h> void crear(); int vacia(); int llena(); void encolar (int elem); int desencolar (); # define max_cola 5 struct tcola { int elems; int entrada, salida; int elemento[max_cola]; } cola; Programa de ejemplo

Listas Operaciones INSERTAR RECORRER BORRAR Una lista es una estructura de datos secuencial. Una manera de clasificarlas es por la forma de acceder al siguiente elemento: lista densa: la propia estructura determina cuál es el siguiente elemento de la lista. Ejemplo: un array. - lista enlazada: la posición del siguiente elemento de la estructura la determina el elemento actual. Es necesario almacenar al menos la posición de memoria del primer elemento. Además es dinámica, es decir, su tamaño cambia durante la ejecución del programa. Operaciones INSERTAR RECORRER BORRAR

Listas - codificación Declaración autoreferencial Declaración struct lista {   int clave;   struct lista *sig; } *L, *p,*actual, *anterior, *nuevo; Declaración autoreferencial Procedimiento de creación de lista vacía L = NULL;

Listas - codificación Procedimiento para insertar información al comienzo int main( ) { int i,suma; L = NULL; /* Crea una lista vacia */ for (i = 4; i >= 1; i--) /* Reserva memoria para un nodo */ p = (struct lista *) malloc(sizeof(struct lista)); scanf(“%d”,&p->clave); /* Introduce la informacion */ p->sig = L; /* reorganiza */ L = p; } ...

Listas - codificación Función para recorrer una lista y calcular la suma de sus elementos void recorrer() { int suma; p = L; while (p != NULL) { printf("%d, ", p->clave); suma = suma + p->clave; p = p->sig; } printf("\nsuma:%d",suma);

Listas - codificación Función para insertar un elemento al final o en medio de la lista ordenada. void insertar(int elem) { /* 1.- se busca su posicion */ anterior = actual = L; while (actual != NULL && actual->clave < elem) { anterior = actual; actual = actual->sig; } /* 2.- se crea el nodo */ nuevo = (struct lista *) malloc(sizeof(struct lista)); nuevo->clave = elem; /* 3.- Se enlaza */ if (anterior == NULL || anterior == actual) { /* inserta al principio */ nuevo->sig = anterior; L = nuevo; /*importante: al insertar al principio actualizar la cabecera */ else { /* inserta entre medias o al final */ nuevo->sig = actual; anterior->sig = nuevo; }}

Listas - codificación Función para insertar un elemento. Otra forma de codificar... else { /* Buscar el nodo de valor menor a v */ anterior = L; /* Avanzamos hasta el último elemento o hasta que el siguiente tenga un valor mayor que v */ while(anterior->siguiente !=NULL && anterior->siguiente->valor <= v) anterior = anterior->siguiente; /* Insertamos el nuevo nodo después del nodo anterior */ nuevo->siguiente = anterior->siguiente; anterior->siguiente = nuevo; } void Insertar( int v) { /* Crear un nodo nuevo */ nuevo = (struct lista *)malloc(sizeof(struct lista)); Nuevo->clave = v; /* Si la lista está vacía */ if(L==NULL || L->clave > v) { /* Añadimos la lista a continuación del nuevo nodo */ nuevo->siguiente = L; /* Ahora, el comienzo de nuestra lista es en nuevo nodo */ L = nuevo; }

Listas - codificación Función para borrar un elemento de la lista. void borrar( int elem) { /* 1.- busca su posición. Es casi igual que en la inserción, ojo al (<) */ anterior = actual = L; while (actual != NULL && actual->clave < elem) { anterior = actual; actual = actual->sig; } /* 2.- Lo borra si existe */ if (actual != NULL && actual->clave == elem) { if (anterior == actual) /* borrar el primero */ L = actual->sig; else /* borrar en otro sitio */ anterior->sig = actual->sig; free(actual); }}

Programa de ejemplo int main( ) { #include <stdlib.h> int i,suma; L = NULL; /* Crea una lista vacía */ for (i = 4; i >= 1; i--) /* Reserva memoria para un nodo */ p = (struct lista *) malloc(sizeof(struct lista)); p->clave = i; /* Introduce la información */ p->sig = L; /* reorganiza */ L = p; /* los enlaces p->L->NULL*/ } recorrer( ); insertar(5); recorrer(); borrar (2); recorrer (); #include <stdlib.h> #include <stdio.h> #include <conio.h> void recorrer( ); void insertar(int elem); void borrar( int elem); struct lista { int clave; struct lista *sig; }*L, *p,*actual, *anterior, *nuevo; Programa de ejemplo

F I N