# data[].attributes.body
Diapositivas del Dr. Francisco Hernández con información sobre la estructura llamada "árboles"

# data[].attributes.body
Página con información de la funcionalidad de una lista doblemente ligada

# data[].attributes.attachment_link.title
Listas doblemente enlazadas en C: ejemplos, código completo…

# data[].attributes.attachment_link.description
El objetivo de este artículo es comprender las listas doblemente enlazadas y entender sus diferencias con las listas simples. Estas suelen utilizarse en programación cuando se requieren múltiples operaciones de inserción o…

# data[].attributes.body
Video explicativo sobre la representación, operaciones y funcionamiento del algoritmo de "heapsort" tanto para "heap maximos" y "heap mínimos"

# data[].attributes.headline
Colas de prioridad y montículos binarios

# data[].attributes.subject
Colas de prioridad y montículos binarios

# data[].attributes.body
Explicación detallada de cómo una cola de prioridad pueda implementarse usando "montículos binarios" (Heaps)

# data[].attributes.attachment_link.authors[].name
Por Cátedra de Algoritmos y Programación II

# data[].attributes.attachment_link.title
24. Colas de Prioridad y Montículos Binarios — Apuntes de Algoritmos y Programación II

# data[].attributes.attachment_link.description
Una cola de prioridad, se comporta de forma similar a una cola, pero cada elemento que ingresa tiene asignada una prioridad y los elementos con mayor prioridad son los primeros en salir de la cola.

# data[].attributes.headline
Implementación de colas de prioridad con C++

# data[].attributes.subject
Implementación de colas de prioridad con C++

# data[].attributes.body
Una explicación de las operaciones básicas para la implementación de colas de prioridad usando arreglos.

# data[].attributes.attachment_link.title
Priority Queue using array in C++ - GeeksforGeeks

# data[].attributes.attachment_link.description
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.

# data[].attributes.body
Esta es la explicación de la implementación de una pila estática en C.

# data[].attributes.headline
¿Qué son los algoritmos de ordenamiento?

# data[].attributes.subject
¿Qué son los algoritmos de ordenamiento?

# data[].attributes.body
En esto vídeo se explica la razón de conocer y aprender los algoritmos de ordenamiento.

# data[].attributes.body
Se trata de uno de los algoritmos más comunes y conocidos para ordenar un arreglo de datos. Este vídeo explica su funcionamiento.

# data[].attributes.attachment_link.authors[].name
Universitat Politècnica de València - UPV

# data[].attributes.attachment_link.title
Ordenación en C mediante el método de la burbuja |  | UPV

# data[].attributes.body
Ordenamiento y búsqueda

# data[].attributes.body
Estas son las indicaciones para la evaluación del ordinario. Fecha límite de entrega: viernes 3 de julio

# data[].attributes.body
Instrucciones para la entrega de la última tarea del parcial. Fecha de entrega, lunes 15 de junio.

# data[].attributes.body
Dejo las instrucciones para esta tarea sobre listas enlazadas. La fecha de entrega es este lunes 8 de junio.

# data[].attributes.body
Finalmente, en este vídeo se exponen algunas consideraciones para la operación de eliminación en listas enlazadas.

# data[].attributes.attachment_link.description
La Universitat Politècnica de València, consolidada como una institución joven y dinámica, tiene por objetivo formar para el empleo. Para ello, cuenta con un profesorado competente y motivado, que se esfuerza por ofrecer la máxima calidad educativa. Prácticas remuneradas en empresa, estancias en el extranjero, becas, actividades deportivas y culturales gratuitas.

# data[].attributes.body
En el vídeo se explica qué aspectos hay que considerar para realizar la inserción en una lista enlazada. Al final se toca brevemente un tema nuevo (listas doblemente ligadas) pero de ésto hablaremos después.

# data[].attributes.attachment_link.description
La Universitat Politècnica de València, consolidada como una institución joven y dinámica, tiene por objetivo formar para el empleo. Para ello, cuenta con un profesorado competente y motivado, que se esfuerza por ofrecer la máxima calidad educativa. Prácticas remuneradas en empresa, estancias en el extranjero, becas, actividades deportivas y culturales gratuitas.

# data[].attributes.body
Continuando con los vídeos del curso de la UPV, analicemos una de las primeras operaciones con listas enlazadas: el recorrido de sus datos.

# data[].attributes.attachment_link.description
La Universitat Politècnica de València, consolidada como una institución joven y dinámica, tiene por objetivo formar para el empleo. Para ello, cuenta con un profesorado competente y motivado, que se esfuerza por ofrecer la máxima calidad educativa. Prácticas remuneradas en empresa, estancias en el extranjero, becas, actividades deportivas y culturales gratuitas.

# data[].attributes.body
Comencemos entendiendo el porqué de la necesidad de una lista enlazada través de esta vídeo de la Universidad Politécnica de Valencia.

# data[].attributes.attachment_link.description
La Universitat Politècnica de València, consolidada como una institución joven y dinámica, tiene por objetivo formar para el empleo. Para ello, cuenta con un profesorado competente y motivado, que se esfuerza por ofrecer la máxima calidad educativa. Prácticas remuneradas en empresa, estancias en el extranjero, becas, actividades deportivas y culturales gratuitas.

# data[].attributes.body
Esta es la última estructura de datos, en la que aplicaremos varios de los conceptos vistos previamente. Revisa las diapositivas del Dr. Francisco Hernández.

# data[].attributes.body
En esta ocasión explico cómo implementar una cola gestionando memoria dinámica.

# data[].attributes.body
Vídeo donde explico cómo implementar una cola con un arreglo estático.

# data[].attributes.body
Comenzamos esta unidad en donde abordaremos las estructuras de datos llamadas Colas. Revisa las diapositivas siguientes del Dr. Francisco Hernández.

# data[].attributes.body
Desarrollo de un programa iterativo y recursivo. Fecha de entrega: jueves 14 de mayo hasta las 23:00 hrs)

# data[].attributes.body
Aquí les explico con un vídeo como pasar del algoritmo iterativo de Fibonacci a una versión recursiva.

# data[].attributes.body
En este vídeo explico como pasar el algoritmo de Euclides de una versión recursiva a una iterativa.

# data[].attributes.body
Les comparto este vídeo-clase donde hablo sobre qué es la recursión, sus características, codificación y una comparativa contra la iteración.

# data[].attributes.body
Nuevamente recurrimos a la Universidad de Murcia para una explicación formal y didáctica de cómo programar la recursividad.

# data[].attributes.attachment_link.title
Fundamentos de Programación I - Recursividad - Fernando Pereñiguez

# data[].attributes.body
Aquí se explica qué es la recursión a nivel de programación partiendo del concepto de ciclos (iteración)

# data[].attributes.body
El profesor de la UNAM, Dr. Manuel López Michelone, explica de manera amena, que es la recursión

# data[].attributes.body
Abordaremos una técnica de programación muy útil en el desarrollo de funciones de Estructuras de Datos, la recursión

# data[].attributes.body
Desarrollar un programa que sume enteros grandes, usando pilas
Fecha de entrega: lunes 20 de abril (hasta las 23 hrs.)

# data[].attributes.body
Completar el código que permite validar un palíndromo usando pilas.
Fecha de entrega: miércoles 15 de abril (hasta las 23 hrs.)

# data[].attributes.body
Para poner a prueba tus conocimientos sobre pilas dinámicas, realiza esta actividad.
Fecha de entrega: martes 14 de abril

# data[].attributes.body
Aquí está la explicación de cómo funciona una implementación de pila dinámica en C

# data[].attributes.body
Ahora veremos que los mismos conceptos explicados para definir una pila pueden aplicarse a la gestión de memoria y crear una pila dinámicamente.

# data[].attributes.attachment_link.title
Fundamentos de Programación II - Pilas - Raquel Martínez España

# data[].attributes.body
Ahora que ya viste dos códigos con pilas estáticas, realiza esta actividad: Fecha de entrega viernes 27

# data[].attributes.body
De acuerdo a las diapositivas anteriores podemos implementar la pila mediante el siguiente código.

# data[].attributes.attachment_link.readable_text
/*
PROGRAMA: pila_memoria_estatica.cpp
DESCRIPCI�N: Implementando una pila con memoria est�tica
AUTOR: FJHL
ACTUALIZACI�N: 28/ENE/2016
*/
#include <stdio.h>

//Parametro
#define MaxTam 4

void push(int pila[], int *tope, int x);
int pop(int pila[], int *tope);

int main(void){
	printf("\nEjemplo de una pila usando memoria estatica...\n");

	int pila[MaxTam];
	int tope = -1;//Pila Vacia

	push(pila, &tope, 10);
	push(pila, &tope, 20);
	push(pila, &tope, 50);
	push(pila, &tope, 100);
	push(pila, &tope, 200);
	
	printf("\nVerificamos los elementos ingresados a la pila \n");

	printf("Tope en %d: ", tope);
	printf("%d\n", pop(pila, &tope));
	printf("Tope en %d: ", tope);
	printf("%d\n", pop(pila, &tope));
	printf("Tope en %d: ", tope);
	printf("%d\n", pop(pila, &tope));
	printf("Tope en %d: ", tope);
	printf("%d\n", pop(pila, &tope));
	printf("Tope en %d: ", tope);
	printf("%d\n", pop(pila, &tope));

	return(0);
}

void push(int pila[], int *tope, int x){
	if (*tope == MaxTam - 1){
		printf("\nLa Pila esta llena...\n");
	}
	else{
		printf("\nElemento %d ingresado en el tope ",x);
		*tope = *tope + 1;
		pila[*tope] = x;
	}
}

int pop(int pila[], int *tope){
	int x=-1;
	if (*tope == -1){
		printf("La Pila est� vacia...");
	}
	else{
		x = pila[*tope];
		*tope = *tope - 1;
	}
	return(x);
}

# data[].attributes.body
Tenemos el siguiente código de una pila estática. Obsérvalo y ejecutalo. Notarás que funciona, pero su implementación es diferente al primer código analizado.

# data[].attributes.attachment_link.readable_text
#include <stdio.h>
#include <stdlib.h>

#define SIZE 5

void push(int i);
int pop(void);

int  *tos, *p1, stack[SIZE];

int main()
{
  int value;

  tos = stack; 
  p1 = stack; 

  do {
    printf("Ingresar un valor: ");
    scanf("%d", &value);

    if(value != 0) 
		push(value);
    else 
		printf("Valor en el tope es %d\n", pop());

  } while(value != -1);

  return 0;
}

void push(int i)
{
  p1++;
  if(p1 == (tos+SIZE)) {
    printf("Pila desbordada.\n");
    exit(1);
  }
  *p1 = i;
}

int pop(void)
{
  if(p1 == tos) {
    printf("Pila vacia.\n");
    exit(1);
  }
  p1--;
  return *(p1+1);
}
 

# data[].attributes.body
Podemos implementar una pila, utilizando memoria estática. Definimos un tamaño específico y usamos una variable para conocer el tope de la pila. Eso lo puedes recordar en las diapositivas del Dr. Hernández.

# data[].attributes.body
Se trata de una estructura lineal, que únicamente puede manipularse por un extremo llamado 'tope'.
Es una estructura de tipo LIFO.