Durante esta actividad, los alumnos serán capaces de:
Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.
Esta actividad puede ser elaborada de manera individual o en parejas.
Escribe una clase llamada edd.util.IntStack
. Esta clase representa una estructura de datos de pila que permite contener números enteros.
Una pila o stack es una colección secuencial que funciona con una política LIFO (last in, first out), en donde los elementos se insertan y remueven por un mismo extremo.
Usando un arreglo de enteros, implementa los métodos que se describen a continuación. La clase debe ir en el archivo IntStack.java
. En la parte superior del archivo coloca en comentarios los datos personales de los autores de la tarea. Por ejemplo:
/*-------------------------------------------------------------------- * Práctica 1: Pila de enteros * Fecha: 24-Ene-2014 * Autores: * 1166611 Pepper Pots * 1160611 Anthony Stark *--------------------------------------------------------------------*/
Prueba tu código usando la siguiente clase de JUnit:
package edd.util; import static org.junit.Assert.*; import java.util.NoSuchElementException; import org.junit.Test; public class IntStackTest { @Test public void test1() { IntStack s = new IntStack(5); s.push(4); assertEquals(4, s.peek()); s.push(8); assertEquals(8, s.peek()); s.push(15); assertEquals(15, s.peek()); s.push(16); assertEquals(16, s.peek()); s.push(23); assertEquals(23, s.peek()); try { s.push(42); fail(); } catch (IllegalStateException e) { assertEquals("Stack Overflow", e.getMessage()); } } @Test public void test2() { IntStack s = new IntStack(10); s.push(4); s.push(8); s.push(15); s.push(16); s.push(23); s.push(42); assertEquals(42, s.peek()); assertEquals(42, s.pop()); assertEquals(23, s.peek()); assertEquals(23, s.pop()); assertEquals(16, s.peek()); assertEquals(16, s.pop()); assertEquals(15, s.peek()); assertEquals(15, s.pop()); assertEquals(8, s.peek()); assertEquals(8, s.pop()); assertEquals(4, s.peek()); assertEquals(4, s.pop()); try { s.pop(); fail(); } catch (NoSuchElementException e) { assertEquals("Stack Underflow", e.getMessage()); } try { s.peek(); fail(); } catch (NoSuchElementException e) { assertEquals("Stack Underflow", e.getMessage()); } } @Test public void test3() { IntStack s = new IntStack(10); assertTrue(s.isEmpty()); assertEquals(0, s.size()); s.push(4); assertFalse(s.isEmpty()); assertEquals(1, s.size()); s.push(8); assertFalse(s.isEmpty()); assertEquals(2, s.size()); s.push(15); assertFalse(s.isEmpty()); assertEquals(3, s.size()); s.push(16); assertFalse(s.isEmpty()); assertEquals(4, s.size()); s.push(23); assertFalse(s.isEmpty()); assertEquals(5, s.size()); s.push(42); assertFalse(s.isEmpty()); assertEquals(6, s.size()); assertEquals(42, s.pop()); assertFalse(s.isEmpty()); assertEquals(5, s.size()); assertEquals(23, s.pop()); assertFalse(s.isEmpty()); assertEquals(4, s.size()); assertEquals(16, s.pop()); assertFalse(s.isEmpty()); assertEquals(3, s.size()); assertEquals(15, s.pop()); assertFalse(s.isEmpty()); assertEquals(2, s.size()); assertEquals(8, s.pop()); assertFalse(s.isEmpty()); assertEquals(1, s.size()); assertEquals(4, s.pop()); assertTrue(s.isEmpty()); assertEquals(0, s.size()); } @Test public void test4() { IntStack s1 = new IntStack(10); IntStack s2 = new IntStack(10); s1.push(4); s1.push(8); s1.push(15); s1.push(16); s1.push(23); s1.push(42); s2.push(s1.pop()); s2.push(s1.pop()); s2.push(s1.pop()); s2.push(s1.pop()); s2.push(s1.pop()); s2.push(s1.pop()); assertTrue(s1.isEmpty()); assertEquals(4, s2.pop()); assertEquals(8, s2.pop()); assertEquals(15, s2.pop()); assertEquals(16, s2.pop()); assertEquals(23, s2.pop()); assertEquals(42, s2.pop()); assertTrue(s2.isEmpty()); } }
public IntStack(int c)
Constructor que permite crear una nueva pila de números enteros con una capacidad de c
.
public void push(int x)
Inserta x
en el tope de esta pila. Arroja la excepción IllegalStateException
con el mensaje "Stack Overflow"
si la pila ya está en su máxima capacidad.
public int pop()
Remueve el elemento que se encuentra en el tope de esta pila. Devuelve el elemento removido. Arroja la excepción NoSuchElementException
con el mensaje "Stack Underflow"
si la pila se encuentra vacía.
public int peek()
Devuelve, pero sin remover, el elemento que se encuentra en el tope de esta pila. Arroja la excepción NoSuchElementException
con el mensaje "Stack Underflow"
si la pila se encuentra vacía.
public boolean isEmpty()
Devuelve true
si esta pila está vacía, false
en caso contrario.
public int size()
Devuelve el número de elementos contenidos actualmente en esta pila.
Sube el archivo IntStack.java
usando el Sistema de Entrega de Tareas Automatizado. Si la práctica fue desarrollada en equipo, basta que solo uno de los miembros la entregue. No se aceptan tareas por ningún otro medio.
Fecha límite: Viernes, 24 de enero.
Esta actividad será evaluada usando los siguientes criterios:
100 | La actividad cumple con todos los requerimientos. |
---|---|
-10 | No se incluyó en comentario los datos de los autores. |
10 | El programa fuente contiene errores sintácticos. |
50-90 | El programa produce algunos errores al momento de correrlo. |
DA | La solución es un plagio. |