Manual del estudiante de Ingeniería en Sistemas de UTN/Diseño e Implementación de Estructuras de Datos/Guías prácticas/Secuencias

De Wikilibros, la colección de libros de texto de contenido libre.

Ejercicio 1[editar]

Se le solicita que especialice la clase SList, de manera tal que la lista tenga un estado variable. Este estado esta determinado por un nodo de la lista que se lo considera el nodo actual.

Defina los siguientes métodos:

  • addElement(Object anObject) : void: Agrega el argumento anObject a la lista, después del nodo actual.
  • delete() : boolean: Elimina el nodo siguiente al actual.

Solución

Ejercicio 2[editar]

Una frase es palíndroma, si la sucesión de caracteres –ignorando los blancos-obtenida al recorrerla de izquierda a derecha es la misma que si el recorrido se hace de derecha a izquierda.

Escribir un método que reciba una frase y determine si es o no palíndroma.

Solución

Ejercicio 3[editar]

Defina una nueva clase Lista de manera que las inserciones al principio y al final sean de tiempo constante, es decir que el tiempo insumido para insertar el primer elemento debe ser igual al tiempo de inserción del último elemento. Puede agregar atributos a la nueva clase siempre y cuando sean significativos..

Defina los siguientes métodos:

  • add(Object anObject) : void: Agrega el elemento al final de la lista.
  • deleteLast() : void: Elimina el último nodo de la lista.
  • deleteFirst() : void: Elimina el primer nodo de la lista.
  • addFirst(Object anObject) : void: Agrega el elemento anObject al inicio de la lista.

Solución

Ejercicio 4[editar]

Implemente una clase lista con la particularidad de que la misma no tenga elementos repetidos. Si bien los objetos de esta clase no tendrán elementos repetidos, para el usuario esto será transparente. Es decir que si se ingresa 5 veces el mismo objeto y luego se elimina un objeto, la lista seguirá conteniendo 4 objetos.

Se le solicita que codifique los siguientes métodos:

  • add(Object anObject) : void: Agrega el objeto anObject a la lista.
  • remove(Object anObject) : boolean: Elimina una ocurrencia del objeto anObject. En caso que dicho objeto no ocurra en la lista este método retorna false.
  • size() : int: Retorna la longitud de la lista.
  • occurencesOf(Object anObject) : int: Retorna el número de ocurrencias en la lista del objeto anObject.

Solución

Ejercicio 5[editar]

Una cola medieval es muy similar a una cola ordinaria, siendo su única diferencia, que los objetos contenidos pueden ser nobles o plebeyos, y que sólo podrá ser atendido un objeto plebeyo, si no hay ningún noble en la cola.

Crear las clases que necesite para representar una cola medieval, e implemente los métodos de agregado y remoción de la cola.

Solución

Ejercicio 6[editar]

Una expresión algebraica racional fraccionaria puede almacenarse como una lista de caracteres. Esta expresión contiene literales, operadores y los separadores {}, [] y ().

Se debe especializar la clase Pila agregando el protocolo necesario que verifique si los separadores se encuentran bien ubicados.

Solución

Ejercicio 7[editar]

Dado un vector, cuyos objetos contenidos representen cada uno un desastre, y tengan atributos que representen su fecha, número de víctimas, y fecha del último desastre que tuviera más víctimas que él, debe implementarse un método que determine éste último atributo en cada objeto del vector, si éste estuviere vacío.

Cree todas las clases que requiera el problema, excepto las que pueda importar.

Solución