Você está na página 1de 1

ACH2023 ALGORITMOS E ESTRUTURAS DE DADOS I

Exercícios: listas, filas, matrizes esparsas e listas generalizadas

1. Os itens A,B,C,D,E foram inseridos em uma fila vazia. Em seguida, três destes
elementos foram retirados da fila e inseridos em uma pilha vazia. Se for executada
uma operação pop() na pilha depois disso, qual a chave retornada?
2. Escreva um algoritmo que tome como entrada uma fila f e retorne um deque contendo
os mesmos elementos de f.
3. Inverta o conteúdo de uma fila dinâmica usando uma pilha como estrutura de dados
auxiliar.
4. Implemente um deque de forma estática e suas funções retirar(1) e inserir(2).
5. Sejam NP pilhas compartilhando um vetor A[MAX]. Escreva uma função booleana que,
dada uma pilha k, mova todos seus elementos para a pilha k+1 na ordem normal de
entrada e saída de dados da pilha (FILO) retornando true se a operação pode ser
realizada com sucesso ou false em caso contrário.
6. Escreva uma função para converter uma fila de implementação estática em uma de
implementação dinâmica.
7. Seja uma matriz esparsa quadrada de MAX linhas e colunas m representada por listas
cruzadas e um deque dinâmico d. Escreva um algoritmo que receba como entrada um
par de coordenadas x,y e insira na entrada1 no deque d o conteúdo de m(x,y).
8. Mesma matriz do exercício anterior: escreva uma função que retorna um ponteiro
para a linha ou coluna que tiver o maior número de elementos.
9. Seja uma matriz esparsa de até MAXLIN x MAXCOL elementos representada por linhas.
Escreva um algoritmo que retorna a quantidade de linhas em branco da estrutura sem
usar vetores ou listas auxiliares.
10. Mesma matriz do exercício anterior: dado um elemento p da matriz, escreva uma
função para movê-lo uma coluna para a direita se possível, retornando true/false
conforme o caso.
11. Escreva um algoritmo que dada uma lista generalizada *p e um nó *s que é
garantidamente do tipo sublista, mova toda a sublista apontada por *s para o final da
estrutura, no nível mais alto. Por exemplo, se a lista for {a,b,c,*s,d,e} em que *s é uma
sublista, após a operação a lista resultante será {a,b,c,d,e,*s}.
12. Escreva um algoritmo não-recursivo para contar as chaves existentes em uma lista
generalizada usando uma pilha como estrutura de dados auxiliar.
13. Escreva um algoritmo que retorne um ponteiro para o último elemento (i.e., o mais à
direita e o mais profundo) de uma lista generalizada.
14. Percorra uma lista generalizada criando uma matriz esparsa representada por linhas da
seguinte forma: considere cada chave encontrada na lista o número da coluna x na
matriz, e a profundidade do nó como sendo a linha y na matriz (a lista inicial fica na
profundidade 1). Nas coordenadas (x,y) da matriz, insira um valor v que represente a
ordem do elemento dentro da lista atual (o primeiro elemento de cada lista ou sublista
é o elemento 1).
15. Idem acima, para uma matriz representada por listas cruzadas.

Você também pode gostar