Loading repository data…
Loading repository data…
estsetubal-pa / repository
Este repositório consiste num projeto IntelliJ de suporte à lecionação dos tipos abstratos de dados na linguagem Java, no contexto da unidade curricular de Programação Avançada - ESTSetúbal.
Este repositório consiste num projeto IntelliJ de suporte à lecionação dos tipos abstratos de dados na linguagem Java, no contexto da unidade curricular de Programação Avançada - ESTSetúbal.
Os exercícios solicitados são os seguintes:
Faça clone deste projeto base ADTStack_Template (projeto IntelliJ) do GitHub:
Forneça o código dos métodos por implementar, i.e., os que estão a lançar NotImplementedException;
Compile e teste o programa fornecido, verificando que os resultados são os esperados; a excepção FullStackException deverá ser capturada com sucesso.
Modifique o método push() para aumentar dinamicamente o array elements sempre que necessário. Compile e teste novamente o programa; a excepção já não deverá ocorrer.
Pretende-se uma diferente implementação baseada em lista (simplesmente) ligada na classe StackLinkedList. A definição de um nó é fornecida na inner class Node.
public class StackLinkedList<T> implements Stack<T> {
private Node top; //sentinela
private int size;
public StackLinkedList() {
this.top = new Node(null, null);
this.size = 0;
}
private class Node { //inner class, só reconhecida neste contexto
private T element;
private Node next;
public Node(T element, Node next) {
this.element = element;
this.next = next;
}
}
}
Substitua a implementação de Stack utilizada no método main() por uma instância da classe anterior. Compile e teste o programa verificando que o comportamento do programa se mantém inalterado.
Quais as complexidades algorítmicas para as operações push() e pop() nas duas implementações obtidas?
(Extra) Para efeitos meramente pedagógicos, remova o atributo size da classe StackLinkedList e adapte o código existente para o tornar funcional.
Um programa deverá solicitar um número ao utilizador, e.g., 233 e apresentar esse número em binário. O algoritmo divide sucessivamente o número por 2 (divisão inteira) até zero e guarda numa pilha o resto das divisões – ver figura. O número em binário é obtido removendo todos os elementos da pilha, i.e., pela ordem de saída.
Crie uma classe DecimalToBinary contendo um método main; implemente o algoritmo solicitado no método:
public static String decimal2Binary(int decimal)
No método main crie o programa que solicita ao utilizador um número decimal e apresente a sua representação em binário; invoque o método anterior.