¿Quieres un reto mayor?
Resuelve en 15:00
Importante: Para que se registre el resultado tienes que iniciar sesión.
Implementa un Stack<T> genérico
- radio_button_uncheckedLa clase Stack debe ser genérica
- radio_button_uncheckedEl array interno debe ser de tipo T[]
Enunciado
Implementa la clase genérica Stack<T> que representa una pila (LIFO) capaz de almacenar elementos de cualquier tipo de forma segura.
// Ejemplos de uso
const stack = new Stack<number>();
stack.push(10);
stack.push(20);
stack.push(30);
stack.pop(); // 30 (elimina y retorna el último)
stack.peek(); // 20 (solo consulta, no elimina)
stack.size; // 2
stack.isEmpty; // false
Instrucciones:
- Parametriza la clase con
<T>. - Almacena los elementos en un array privado de tipo
T[]. - Implementa
push(item: T): void— agrega al tope. - Implementa
pop(): T | undefined— elimina y retorna el tope;undefinedsi vacío. - Implementa
peek(): T | undefined— retorna el tope sin eliminarlo. - Implementa el getter
size: number— cantidad de elementos. - Implementa el getter
isEmpty: boolean— verdadero si no hay elementos.
La función exportada createStack es el punto de entrada para los tests: recibe un array de números, los agrega al stack con push y retorna el resultado de pop().
Nota sobre los tests: los tests verifican comportamiento en runtime. El uso correcto de genéricos (
Stack<T>,T[],T | undefined) es una restricción de TypeScript que el compilador valida, pero no cambia el resultado de ejecución — por eso no puede distinguirse via tests funcionales. La excepción es el tipo de retornoT | undefined: el test con array vacío verifica quepop()retorne correctamenteundefinedcuando la pila está vacía.
Restriccionesexpand_more
- Dificultad: Difícil
- Completa todos los test cases para obtener los 30 puntos.
- No modificar la línea
exportal final del archivo. - Se recomienda evitar el uso de inteligencia artificial para que realmente tú practiques los ejercicios.
Puedes usar console.log() para depurar. Los resultados aparecen en la Consola de salida, no en el navegador.