Buscar

Lista Estrutura de Dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LISTAS LINEARES 
 
1) Desenvolva um programa com uma subrotina que permita a inclusão de um elemento em uma lista 
simplesmente encadeada que armazena valores inteiros, numa determinada posição. A subrotina 
deverá receber a lista, a informação e a posição em que a nova informação será incluída. Caso a 
posição seja maior que o número de elementos existentes na lista, a mesma deverá ser incluída no 
final. Considere a possibilidade da lista, no início estar vazia. 
 
2) Você deverá implementar um tipo abstrato de dados TConjunto (lista simplesmente encadeada) para 
representar conjuntos de números inteiros. Seu tipo abstrato deverá armazenar os elementos do 
conjunto e o seu tamanho N. Considere que o tamanho máximo de um conjunto é de 20 elementos e 
use arranjos de 1 dimensão (vetores) para a sua implementação. Seu TAD deve possuir procedimentos 
(ou funções quando for o caso) para: 
 
a) Criar um conjunto vazio; 
b) Ler os dados de um conjunto; 
c) Fazer a união de dois conjuntos; 
d) Fazer a intersecção de dois conjuntos; 
e) Verificar se dois conjuntos são iguais (possuem os mesmos elementos); 
f) Imprimir a união e a intersecção dos dois conjuntos ; 
 
3) Criar um programa que implemente uma lista simplesmente encadeada que armazene valores reais, 
estruturado com as seguintes operações: 
 
a) Inserir um dado elemento na primeira posição da lista; 
b) Inserir um dado elemento na última posição da lista; 
c) Modificar um elemento da lista, sendo dados a sua posição e o novo valor; 
d) Remover o primeiro elemento da lista; 
e) Remover o último elemento da lista; 
f) Remover um elemento dado o seu valor. 
 
4) Faça um programa que implemente uma subrotina para ordenar uma lista simplesmente encadeada 
de números inteiros, previamente lida em ordem crescente. Antes de construir a rotina, faça a definição 
do tipo da lista: RECORD e tipo apontador. Liste na tela a lista devidamente ordenada. 
 
5) Considere uma lista simplesmente encadeada que armazene dados literais (NOME), desenvolva um 
programa estruturado conforme o quadro abaixo: 
 
 
 
LISTA DE EXERCÍCIOS III – 4º Bimestre – LTP & LPI. 
Estruturas de Dados 
 
Profº.: Marcelo Cunha de Oliveira Turma: 1º AI/1º AM 
Aluno: Nº: 
 
 
 
OBS: observe que todas as operações precisam considerar que se trata de uma lista ordenada. 
 
6) Faça um programa que armazene o Nome, idade, e sexo de uma pessoa em uma estrutura 
simplesmente encadeada na memória. Implemente as seguintes operações: 
 
a) Inserir um registro lido no início da lista; 
b) Contar quantos elementos existem nesta lista simplesmente encadeada e imprimir na tela; 
c) Verificar se uma determina pessoa existe na lista. A consulta pode ser feita pelo Nome da pessoa. 
Listar os dados desta pessoa. 
d) Faça uma subrotina que elimine um determinado registro da lista. A consulta pode ser feita pelo 
Nome da pessoa. Pode ser que a lista não contenha o registro pesquisado, use mensagens. 
 
7) Considere uma lista (a sua escolha) que armazena os dados dos alunos da FNE (código e nome). 
Desenvolva um programa que implemente os seguintes módulos: 
 
a) Faça um procedimento recursivo para imprimir uma lista de alunos, na ordem da lista; 
b) Faça um procedimento recursivo para imprimir uma lista de alunos, na ordem inversa da lista; 
c) Faça um procedimento não recursivo para inserir um aluno no fim da lista; 
d) Faça um procedimento recursivo para remover um aluno com certo nome da lista; 
e) Faça um procedimento recursivo para duplicar e imprimir uma lista em ordem inversa. 
 
8) Desenvolva um programa com uma subrotina que permita a inclusão de um elemento numa lista 
duplamente encadeada em uma determinada posição. A subrotina deverá receber a lista, a informação 
(inteiros) e a posição em que a nova informação será incluída. Caso a posição seja maior que o número 
de elementos atualmente existentes na lista, a mesma deverá ser incluída no final. Considere a 
possibilidade da lista no início estar vazia. Liste a lista completa na saída. 
 
9) Faça um programa que armazene o Nome, idade, sexo e salário de uma pessoa em uma estrutura 
duplamente encadeada na memória. Estruture o programa com as seguintes operações: 
 
a) Desenvolva uma subrotina para inserir o registro no início da lista; 
b) Desenvolva uma subrotina para inserir o registro no final da lista; 
c) Faça uma subrotina que elimine o primeiro elemento da lista, se o mesmo existir. 
d) Faça uma subrotina que elimine o segundo elemento da lista, se o mesmo existir. 
e) Faça uma subrotina que elimine o último elemento da lista, se o mesmo existir; 
f) Desenvolva uma subrotina para listar os dados da lista. 
 
10) Crie um programa com uma subrotina para ordenar uma lista duplamente encadeada de números 
inteiros previamente lida em ordem crescente. Antes de construir a Rotina, faça a definição do tipo da 
lista: RECORD e o tipo apontador. Aproveitando a lista ordenada, faça também uma subrotina para 
listar o conteúdo da lista em ordem crescente. 
 
11) Desenvolva um programa com uma função que rearranja os elementos de uma lista duplamente 
encadeada dada, pondo todos os elementos que ocorrem nas posições pares antes de todos os 
elementos de ocorrem nas posições ímpares. Você deve preservar a ordem relativa dos elementos 
 
 
pares entre si, e a ordem relativa dos elementos Ímpares entre si. Imprima na saída a lista original e a 
lista posteriormente reorganizada. 
 
12) Quando temos uma lista ligada só podemos caminhar por esta lista apenas em um dos sentidos. Uma 
maneira de contornar este tipo de restrição é usar uma lista duplamente ligada. Neste tipo de lista 
temos em cada elemento dois campos de ligação. Um chamado próximo, que tem a mesma função que 
o campo próximo em listas ligadas e outro campo chamado anterior, que aponta para um elemento 
anterior na seqüência definida pelo campo próximo. O primeiro elemento da lista tem seu campo 
anterior com valor nil. A figura seguinte apresenta uma lista duplamente ligada com 4 elementos. Faça 
um programa com rotinas para inserção no início da lista, remoção do primeiro elemento, remoção de 
um elemento com um determinado nome e listagem dos dados da lista. 
 
13) Crie um programa com as definições de tipo necessárias para criar, uma estrutura na memória como a 
que é representada na figura abaixo: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a) Dicionário é um vetor ( de “A” até “Z”) de pointers para uma estrutura duplamente encadeada onde 
além dos campos “Prox” e “Ant” , existem mais dois campos STRING os quais representam a 
palavra e o seu significado. 
 
b) A lista de palavras que estão ligadas ao índice “A” do vetor, corresponde àquelas palavras que 
iniciam com a letra “A”, e assim por diante. 
 
c) Desenvolva uma subrotina para inclusão de uma palavra e o seu significado no dicionário de 
palavras. Lembre-se que a palavra e o seu significado não devem ser incluídas em qualquer lista de 
forma aleatória, a inclusão dever ser feita somente na lista cujo índice do vetor corresponde à 
primeira letra da palavra. Desta forma, caso a palavra, fosse “Cavalo”, esta palavra, junto com o seu 
significado, deveriam ser incluídos na lista existente no índice “C” do vetor. 
 
14) Escreva um programa que simule uma pilha usando vetores e ponteiros. O programa deve implementar 
as seguintes operações sobre os dados da pilha: 
 
a) Inserir; 
b) Remover; 
c) Listar (do último inserido ao primeiro). 
A 
B NIL 
C 
D NIL 
... 
Z 
 
 
 
15) Escreva um programa uma função que imprime os elementos de uma pilha na mesma ordem em que 
eles foram empilhados, como no exemplo abaixo: 
 
 
 
O conteúdo da pilha deve ser o mesmo antes e depois da execução da função. Pode ser utilizado uma 
pilha auxiliar. 
 
16) Considere uma pilha que armazene dadosinteiros, desenvolva um programa estruturado conforme o 
quadro abaixo: 
 
 
 
17) Existem, basicamente, duas operaçöes a serem implementadas nas filas: adicionar e remover. É 
comum a utilizaçäo de um ponteiro para o início e outro para o fim da fila, facilitando assim as 
operaçöes. 
 
Adicionar - procedure adiciona (var inicio : ponteiro ; info : InfoType); 
Remover - function remove (var inicio : ponteiro) : InfoType; 
 
A partir dos protótipos descritos acima, desenvolva um programa que represente uma fila, 
implementando os módulos Adicionar e Remover. 
 
18) Considere uma fila que armazene dados reais, desenvolva um programa estruturado conforme o 
quadro abaixo: 
 
 
 
 
19) Uma fila simétrica permite a realização das operações de inserção e remoção em ambas as 
extremidades. Considere uma implementação em que o tipo Fila Simétrica é uma estrutura que contém 
apontadores para o primeiro e para o último elemento da fila, sendo esta implementada através de uma 
lista duplamente ligada. 
Implemente as funções para criar fila, enfileirar, desenfileirar e destruir a fila. 
 
 
 
 
 
20) Considere a figura abaixo: 
 
 
 
 
 
Da mesma forma que uma lista encadeada é representada por um ponteiro para o primeiro nó, a 
estrutura da árvore como um todo é representada por um ponteiro para o nó raiz. 
 
Como veremos as funções que manipulam árvores são, em geral, implementadas de forma recursiva, 
usando a definição recursiva da estrutura. Como uma árvore é representada pelo endereço do nó raiz, 
uma árvore vazia tem que ser representada pelo valor NIL. Para criar árvores não vazias, podemos ter 
uma operação que cria um nó raiz dadas à informação e suas duas sub-árvores, à esquerda e à direita. 
Essa função tem como valor de retorno o endereço do nó raiz criado. 
 
As duas funções inicializam e criam (direita e esquerda) representam os dois casos da definição 
recursiva de árvore binária. Usando as operações inicializa e cria, crie uma estrutura que represente a 
árvore da figura acima. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Feliz Natal!!!

Continue navegando

Outros materiais