Baixe o app para aproveitar ainda mais
Prévia do material em texto
Av - Subst. 2 - Algoritmos e Programação Estruturada 1) A estrutura de dados lista representa um conjunto dinâmico cujos elementos podem ser inseridos e retirados de qualquer parte da estrutura. Dentre suas principais funções, estão: inserir(li, pos, item): adiciona o elemento “item” na posição “pos” da lista “li”; remover(li, pos): remove e retorna o elemento da posição “pos” da lista “li”; e obter(li, pos): retorna (sem remover) o elemento da posição “pos” da lista “li”; Já a estrutura de dados pilha representa um conjunto dinâmico cujos elementos são inseridos e retirados de acordo com o seguinte protocolo: o último elemento que entra no conjunto é o primeiro que sai. Suas principais funções são: empilhar(p, item): também conhecida como push, essa função é responsável por empilhar um “item” no topo da pilha “p”; desempilhar(p): também conhecida como pop, essa função é responsável por desempilhar o elemento do topo da pilha “p” e retorná-lo; topo(p): retorna o elemento do topo da pilha “p”, sem retirá-lo da mesma; Considerando uma lista "li" e uma pilha "p" inicialmente vazias, analise a sequência de operações a seguir: empilhar(p, 2) empilhar(p, 3) inserir(li, 0, 4) inserir(li, 0, desempilhar(p)) inserir(li, 0, topo(p)) empilhar(p, remover(li, 1)) Assinale a alternativa que representa corretamente os estados da lista "li" e da pilha "p", após a execução, em ordem, das operações apresentadas anteriormente. Alternativas: • a) Pilha "p": 3 <- topo 2 Lista "li": Início -> 2, 4 • b) Pilha "p": 2 <- topo Lista "li": Início -> 2, 3, 4 Alternativa assinalada • c) Pilha "p": 3 <- topo 2 Lista "li": Início -> 2, 3, 4 • d) Pilha "p": Vazia Lista "li": Início -> 2, 3, 4 • e) Pilha "p": Vazia Lista "li": Início -> 2, 4 2) A estrutura de dados representa um conjunto dinâmico, cujos elementos são inseridos e retirados de acordo com o seguinte protocolo: o primeiro elemento que entra no conjunto é o primeiro que sai. Dentre suas principais funções, estão: enfileirar(f, item): também conhecida como enqueue, enfileira o elemento “item” no final da fila “f”; desenfileirar(f): também conhecida como dequeue, desenfileira o elemento do início da fila “f” e o retorna; inicio(f): retorna o elemento do início da fila “f”, sem retirá-lo na mesma. Já a estrutura de dados pilha representa um conjunto dinâmico cujos elementos são inseridos e retirados de acordo com o seguinte protocolo: o último elemento que entra no conjunto é o primeiro que sai. Suas principais funções são: empilhar(p, item): também conhecida como push, essa função é responsável por empilhar um “item” no topo da pilha “p”; desempilhar(p): também conhecida como pop, essa função é responsável por desempilhar o elemento do topo da pilha “p” e retorná-lo; topo(p): retorna o elemento do topo da pilha “p”, sem retirá-lo da mesma. Considerando uma fila "f" e uma pilha "p" inicialmente vazias, analise a sequência de operações a seguir: enfileirar(f, 2) enfileirar(f, 3) empilhar(p, 4) empilhar(p, desenfileirar(f)) empilhar(p, inicio(f)) enfileirar(f, topo(p)) Assinale a alternativa que representa corretamente os estados da fila "f" e da pilha "p", após a execução, em ordem, das operações apresentadas anteriormente. Alternativas: • a) Fila "f": Início -> 2, 3, 3 <- Fim Pilha "p": 3 <- Topo 2 4 • b) Fila "f": Início -> 2, 3, 3 <- Fim Pilha "p": 2 <- Topo 4 Alternativa assinalada • c) Fila "f": Início -> 3, 3 <- Fim Pilha "p": 2 <- Topo 4 • d) Fila "f": Início -> 3, 3 <- Fim Pilha "p": 3 <- Topo 2 4 • e) Fila "f": Início -> 2, 3, 3 <- Fim Pilha "p": 2 <- Topo 4 3) A seguir, é apresentado o código da função "pilhaParaLista(p)", a qual recebe uma pilha "p" por parâmetro e retorna uma lista contendo todos os elementos contidos na pilha "p". struct Lista* pilhaParaLista(struct Pilha* p) { assert(p != NULL); struct Pilha* aux = criar(); struct Lista* li = criar(); while(vazia(p) == false) { empilhar(aux, desempilhar(p)); } while(vazia(aux) == false) { int elemento = desempilhar(aux); empilhar(p, elemento); inserir(li, 0, elemento); } liberar(aux); return li; } Considerando a pilha "p" a seguir, assinale a alternativa que representa corretamente o estado da lista retornado pela função "pilhaParaLista(p)": Pilha "p": 5 <- Topo 4 2 Alternativas: • a) Início -> [5, 2, 4] • b) Início -> [5, 4, 2] • c) Início -> [4, 2, 5] Alternativa assinalada • d) Início -> [4, 5, 2] • e) Início -> [2, 4, 5] 4) Pilha e fila são exemplos de estruturas de dados bastante conhecidas. Em uma pilha, elementos podem ser inseridos e removidos apenas de uma extremidade da estrutura, conhecida como "topo". No caso da fila, elementos são inseridos em uma de suas extremidades (fim) e removidos da outra (início). A isso, damos o nome de protocolo da estrutura de dados. Com base no que foi exposto, considere o seguinte problema: um usuário inseriu os números 3, 2, 4 e 5, nesta ordem, em uma estrutura de dados A, respeitando seu protocolo. Assim, a estrutura de dados A ficou preenchida da seguinte forma: A: [5, 4, 2, 3] Logo após, ele removeu todos os elementos da estrutura de dados A e os inseriu em uma estrutura de dados B, respeitando os protocolos de ambas as estruturas. A estrutura de dados A ficou vazia e a estrutura de dados B ficou preenchida da seguinte forma: B: [5, 4, 2, 3] Por fim, ele repetiu o processo, removendo os elementos da estrutura B e inserindo-os em uma estrutura de dados C. Isso vez com que a estrutura de dados B ficasse vazia e a estrutura de dados C ficasse preenchida da seguinte forma: C: [3, 2, 4, 5] Assinale a alternativa que representa corretamente o nome das estruturas de dados A, B e C: Alternativas: • a) A. Pilha / B. Fila / C. Pilha • b) A. Pilha / B. Pilha / C. Fila Alternativa assinalada • c) A. Fila / B. Pilha / C. Fila • d) A. Fila / B. Fila / C. Pilha • e) A. Pilha / B. Fila / C. Fila 5) Pilha e fila são exemplos de estruturas de dados bastante conhecidas. Em uma pilha, elementos podem ser inseridos e removidos apenas de uma extremidade da estrutura, conhecida como "topo". No caso da fila, elementos são inseridos em uma de suas extremidades (fim) e removidos da outra (início). A isso, damos o nome de protocolo da estrutura de dados. Com base no que foi exposto, considere o seguinte problema: um usuário inseriu os números 7, 2, 5 e 3, nesta ordem, em uma estrutura de dados A, respeitando seu protocolo. Assim, a estrutura de dados A ficou preenchida da seguinte forma: A: [7, 2, 5, 3] Logo após, ele removeu todos os elementos da estrutura de dados A e os inseriu em uma estrutura de dados B, respeitando os protocolos de ambas as estruturas. A estrutura de dados A ficou vazia e a estrutura de dados B ficou preenchida da seguinte forma: B: [3, 5, 2, 7] Por fim, ele repetiu o processo, removendo os elementos da estrutura B e inserindo-os em uma estrutura de dados C. Isso vez com que a estrutura de dados B ficasse vazia e a estrutura de dados C ficasse preenchida da seguinte forma: C: [7, 2, 5, 3] Assinale a alternativa que representa corretamente o nome das estruturas de dados A, B e C: Alternativas: • a) A. Fila / B. Fila / C. Pilha • b) A. Pilha / B. Fila / C. Pilha • c) A. Fila / B. Pilha / C. Pilha • d) A. Pilha / B. Pilha / C. Fila • e) A. Fila / B. Pilha / C. Fila Alternativa assinalada Av - Subst. 2 - Algoritmos e Programação Estruturada
Compartilhar