Logo Passei Direto
Buscar
A Pilha é uma das estruturas mais simples e mais versáteis dentre as utilizadas na computação. Antes de entrar nas nuances técnicas sobre pilhas, vamos abstrair o seu conceito para uma situação real.

Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016.

As funções de desempilhar e de empilhar são comumente chamadas de pop() e push(), respectivamente. Considere a seguinte pilha de números inteiros:

PILHA:
INÍCIO -> 5, 2, 15, 3, 9, 8, 4, 12, 10, 7, 1, 11 <-TOPO

Sobre essa pilha, execute a seguinte sequência de operações:

pop(); pop(); pop(); push(6); push(13); pop(); push(14); pop(); pop();
Assinale o elemento que será o próximo a ser removido se for chamada a função pop() mais uma vez:
A 9.
B 7.
C 11.
D 8.
E 10.
User badge image
Tópicos de Análise e Desenvolvimento de Sistemas

há 3 semanas

Respostas

User badge image

Ed Verified user icon

há 3 semanas

Vamos analisar passo a passo a pilha e as operações: Pilha inicial (do topo para o fundo): Topo -> 11, 1, 7, 10, 12, 4, 8, 9, 3, 15, 2, 5 -> Fundo Operações: 1) pop() -> remove 11 Pilha: 1, 7, 10, 12, 4, 8, 9, 3, 15, 2, 5 2) pop() -> remove 1 Pilha: 7, 10, 12, 4, 8, 9, 3, 15, 2, 5 3) pop() -> remove 7 Pilha: 10, 12, 4, 8, 9, 3, 15, 2, 5 4) push(6) -> adiciona 6 no topo Pilha: 6, 10, 12, 4, 8, 9, 3, 15, 2, 5 5) push(13) -> adiciona 13 no topo Pilha: 13, 6, 10, 12, 4, 8, 9, 3, 15, 2, 5 6) pop() -> remove 13 Pilha: 6, 10, 12, 4, 8, 9, 3, 15, 2, 5 7) push(14) -> adiciona 14 no topo Pilha: 14, 6, 10, 12, 4, 8, 9, 3, 15, 2, 5 8) pop() -> remove 14 Pilha: 6, 10, 12, 4, 8, 9, 3, 15, 2, 5 9) pop() -> remove 6 Pilha: 10, 12, 4, 8, 9, 3, 15, 2, 5 Agora, se chamarmos pop() mais uma vez, será removido o topo atual, que é 10. Portanto, a resposta correta é: E) 10.

Essa resposta te ajudou?

0
Dislike0

Ainda não achou a resposta?

  • Integrado com os principais modelos de IA do mercado
  • Respostas em segundos
  • IA treinada para estudantes brasileiros.
PasseIA logoEvolua sua forma de estudar

Cadastre-se ou realize login

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Essa pergunta também está no material:

Mais perguntas desse material

Lista ligada, ou lista encadeada, é uma estrutura de dados linear e dinâmica. Ela é composta por uma sequência de nós que contém seus dados e também uma ou duas referências, ponteiros, que apontam para o nó anterior ou posterior. Há diversos modelos de lista ligadas como lista encadeada, listas duplamente encadeada e listas encadeadas circulares.
Com base no texto exposto, analise as afirmativas a seguir:

I. O processo de remoção de uma lista encadeada é simples, basta acessar a posição do vetor e inserir um valor vazio.
II. A lista duplamente encadeada é uma estrutura de dados na qual cada nó possui pelo menos três campos: um de dados e dois de endereço, sendo um dos endereços usado para apontar ao nó anterior e o outro aponta para o nó posterior (próximo nó).
III. O vetor estático, caso seja necessário aumentar o seu tamanho, basta alocar (adicionar) espaço no vetor.
IV. Os itens na lista são chamados de nó e contêm pelo menos dois elementos: um de dados e um de endereço. O campo de endereço contém o conteúdo do elemento armazenado na lista, já o campo de dados é um ponteiro para o próximo nó.

É correto o que se afirma em:
I. O processo de remoção de uma lista encadeada é simples, basta acessar a posição do vetor e inserir um valor vazio.
II. A lista duplamente encadeada é uma estrutura de dados na qual cada nó possui pelo menos três campos: um de dados e dois de endereço, sendo um dos endereços usado para apontar ao nó anterior e o outro aponta para o nó posterior (próximo nó).
III. O vetor estático, caso seja necessário aumentar o seu tamanho, basta alocar (adicionar) espaço no vetor.
IV. Os itens na lista são chamados de nó e contêm pelo menos dois elementos: um de dados e um de endereço. O campo de endereço contém o conteúdo do elemento armazenado na lista, já o campo de dados é um ponteiro para o próximo nó.
A II, apenas.
B I, II e III, apenas.
C II, III e IV, apenas.
D I e III, apenas.
E II e IV, apenas.

Pode-se imaginar uma pilha ou fila nas quais seus elementos contivessem, além do dado armazenado, o endereço de referência para o próximo elemento. Para a estrutura de dados que se organiza dessa maneira, dá-se o nome de lista encadeada.
Sobre a implementação de listas, avalie as asserções a seguir e a relação proposta entre elas:

I. A utilização de estruturas de dados que podem utilizar alocação dinâmica de memória, como as listas duplamente encadeadas, mostra-se vantajosa, principalmente por evitar desperdício de memória.

PORQUE

II. A memória física de um computador é como um grande vetor estático, que pode ser vasculhado à procura de posições livres para se realizar alocação de memória em tempo de compilação.

A respeito dessas asserções, assinale a opção correta:
I. A utilização de estruturas de dados que podem utilizar alocação dinâmica de memória, como as listas duplamente encadeadas, mostra-se vantajosa, principalmente por evitar desperdício de memória.
II. A memória física de um computador é como um grande vetor estático, que pode ser vasculhado à procura de posições livres para se realizar alocação de memória em tempo de compilação.
A As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
B A asserção I é uma proposição falsa e a II é uma proposição verdadeira.
C A asserção I é uma proposição verdadeira e a II é uma proposição falsa.
D As asserções I e II são falsas.
E As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.

Tanto a fila como a pilha são conjuntos ordenados de itens, porém ambas se diferenciam pelas regras de entrada e saída. Na pilha, a entrada e a saída de dados se dão pela mesma extremidade, chamada de topo da pilha. Na fila, a entrada e a saída ocorrem em lugares opostos: a entrada acontece no final da fila e a saída no seu início.
A respeito de tais estruturas de dados, assinale a alternativa correta:
A Os registros são estruturas de dados para armazenamento heterogêneo, que possuem os dados a serem armazenados e um ponteiro para o próximo elemento.
B As filas e pilhas podem armazenar dados do mesmo tipo, mudando apenas as regras para implementar suas respectivas funções de inserção e remoção de elementos.
C As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar elementos de tipos diferentes, sem uma ordem especificada.
D A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado por parâmetro.
E A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado por parâmetro.

Ao trabalhar com ponteiros, o desenvolvedor tem a possibilidade de realizar acessos a endereços de memória arbitrários. Além disso, ela permite, ainda, que você monitore endereços na memória, atribua e recupere valores de variáveis sem ao menos invocá-las diretamente.
Dessa forma, analise o trecho de código a seguir: int xi; int xy; int *ptr_xi; xi = 5; xy = xi; ptr_xi = & xi; xi = 12; Assinale a alternativa correta que apresenta o valor de cada uma das variáveis após a execução do código:
A xi é 12; xy é 5; ptr_xi é 5; *ptr_xi é um valor que representa o endereço de memória.
B xi é 12; xy é 12; ptr_xi é 12; *ptr_xi é um valor que representa o endereço de memória.
C xi é 12; xy é 12; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
D xi é 5; xy é 12; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.
E xi é 12; xy é 5; *ptr_xi é 12; ptr_xi é um valor que representa o endereço de memória.

Tanto a fila como a pilha são conjuntos ordenados de itens, porém ambas se diferenciam pelas regras de entrada e saída. Na pilha, a entrada e a saída de dados se dão pela mesma extremidade, chamada de topo da pilha. Na fila, a entrada e a saída ocorrem em lugares opostos: a entrada acontece no final da fila e a saída no seu início. No caso de uma variável simples, a princípio, armazena-se apenas uma informação de um determinado tipo. Para armazenar mais de um elemento em uma variável, podemos usar estruturas homogêneas ou heterogêneas.
A respeito das estruturas de dados mencionadas, assinale a alternativa correta:
A As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar apenas elementos de tipos diferentes, sem uma ordem predeterminada.
B Os registros são estruturas de dados para armazenamento heterogêneo, que possuem os dados a serem armazenados e um ponteiro para o próximo elemento.
C A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado por parâmetro.
D A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado por parâmetro.
E As filas e pilhas podem armazenar elementos de um mesmo tipo, mudando apenas as funções de inclusão e remoção das filas para as pilhas.

Um programador criou uma lista dinâmica com base na estrutura apresentada a seguir: struct no { int dado; struct no *proximo; }; struct lista{ struct no *inicio; } struct lista l; O programador criou um programa para percorrer toda a lista, fazendo com que um ponteiro ptr, iterador, seja inicializado em l->inicio e incrementado até atingir o final da respectiva lista.
No critério de parada da estrutura de repetição utilizada para percorrer a lista, o programador deve esperar que ptr->proximo seja igual a que valor ou identificar o final da lista como?
A NULL.
B '\0'.
C l->final.
D Nulo.
E END.

Após estudar ponteiros, é possível criarmos estruturas que aumentam ou diminuem conforme a necessidade. Esse é o caso de listas encadeadas, que podem ser tratadas em diversas formas, por exemplo como pilha, fila, duplamente encadeada, circulares e assim por diante. Com base em seus estudos, observe o trecho de código a seguir: 01 - void nomeDaFuncao(struct ptr_no *lista, int dado){ 02 - struct ptr_no *atual; 03 - atual = (struct ptr_no*) malloc(sizeof(struct ptr_no)); 04 - while((lista->dado != dado)){ 05 - if(lista->proximo == NULL){ 06 - break; 07 - } 08 - atual = lista; 09 - lista = lista->proximo; 10 - } 11 - if(lista->dado == dado){ 12 - atual->proximo = lista->proximo; 13 - } 14 - }Considere que, durante a invocação da referida função, o parâmetro lista recebe um ponteiro que aponta para o primeiro elemento da estrutura de dados. Ainda, leve em consideração que a struct ptr_no possui dois campos, a saber: dado, do tipo inteiro; e proximo, um ponteiro do tipo struct ptr_no. Assinale a alternativa correta que descreve a funcionalidade executada pela função apresentada: A) Insere um item da fila. B) Remove um item da fila. C) Remove um item da lista encadeada. D) Remove um item da pilha. E) Insere um item na lista encadeada.

Mais conteúdos dessa disciplina