5. Estruturasde Dados
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
As estruturas de dados de tipos de dados estruturadas se dividem em homogêneos
(vetores e matrizes) e heterogêneos (registros).
As estruturas homogêneas são conjuntos de dados formados pelo mesmo tipo de
dado primitivo.
As estruturas heterogêneas são conjuntos de dados formados por tipos de dados
primitivos diferentes(campos do registro) em uma mesma estrutura.
A escolha de uma estrutura de dados apropriada pode tornar um problema
complicado em um de solução bastante trivial.
7. O queé TiposAbstratosde Dados(TAD)?
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
É um tipo de modelo ou domínio que encapsula outros tipos de dados. Um TAD
possui um algoritmo para acessar, criar e efetuar operações relacionadas
diretamente ao formato do TAD criado.
8. Estruturas(Structs)emC / C++
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Uma estrutura é uma coleção de uma ou mais variáveis, possivelmente de tipos
diferentes, colocadas juntas sob um único nome para manipulação conveniente
Por exemplo, para representar um aluno são necessárias as informações nome,
matrícula, conceito, ao invés de criar três variáveis, é possível criar uma única
variável contendo três campos.
Em C, usa-se a construção struct para representar esse tipo de dado
10. Declarandoa Structem C
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Vamos declarar uma struct para representar os dados dos funcionários:
11. O tipo struct
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
A sintaxe para declarar outras structs do tipo “struct Funcionario” é:
12. O tipo struct
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Outra maneira de declarar variáveis de um tipo struct que queremos, é criar esses
elementos após as chaves na hora de criar a “struct Funcionario”.
13. O tipo struct:acessandoos campos
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Criamos 3 funcionários desse tipo, e todos eles terão os mesmos elementos internos,
com os mesmos nomes: idade, nome e salario.
Se tem o mesmo nome, como vamos diferenciar esses elementos, então?
14. O tipo struct:acessandoos campos
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Basta colocar um ponto após o nome escolhido para a struct. Após isso, acessamos
normalmente a variável:
15. Typedef
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Visando simplificar (ou abreviar) nomes de tipos e para tratarmos tipos complexos,
é recomendado o uso de typedef
19. Vetorese Ponteiros
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Podemos usar ponteiros como se fossem matrizes:
int mat[] = { 1, 2 , 3 };
int *p = mat;
printf(“%d”, p[2]); // imprime 3
20. Stringse Ponteiros
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Strings são variáveis do tipo *char
Exemplo:
#include <stdio.h>
#include <string.h>
int main() {
char curso[15];
char *p = "Curso de C/C++“;
// p pode ser usado como uma string
strcpy(curso, p);
printf("%s %sn", curso, p);
return 0;
}
21. Ponteirodo tipo void
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Este tipo de ponteiro pode apontar para qualquer outro tipo
Mas para se ter acessoaoconteúdopor ele endereçado precisamos fazer um cast
É útil para a passagem de parâmetros genéricos
char *s = "string";
void *v;
v = s; // v aponta para uma string
s = (char *) v;
22. PonteirosparaPonteiros
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
Guardam o endereço de outro ponteiro
Sintaxe:
tipo **nomeDaVariavel;
Também podem ser usados como matrizes bidimensionais
Podemos criar ponteiros para ponteiros para ponteiros para ponteiros, e assim por
diante
23. Exemplo
09:48
Estrutura de Dados: Aula 02 - Estrutura de dados e TAD
#include <stdio.h>
int main() {
int a = 10, *p, **pp;
p = &a;
pp = &p;
printf("%dn", **pp); // imprime 10
return 0;
}
Obs.: Para acessar o valor
de a através de pp usamos
o operador * duas vezes
25. 09:48
O que é uma Lista?
Estrutura de Dados: Aula 04 - Listas Estáticas
26. O queé uma Lista?
09:48
Uma lista é uma estrutura que armazena
elementos do mesmo tipo de forma alinhada,
ou seja, elementos dispostos um após o outro.
Estrutura de Dados: Aula 04 - Listas Estáticas
28. Lista:exemplos
09:48
Coisas a fazer
Compras
Catálogo telefônico
Informações sobre funcionários da empresa
Notas de alunos
Itens de estoque
Cartas de baralho
etc
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
29. 09:48 29 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Qual propriedade é comum a
todas estas listas
30. 09:48 30 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Linearidade
38. 09:48 38 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Inserção
39. Operações:Inserção
09:48
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Inserções podem ser:
No início da lista;
No final da lista;
Em alguma posição dentro da lista.
40. 09:48 40 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Inserindo no Início
49. 09:48 49 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Remoção
50. Operações:Remoção
09:48
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Podemos remover um elemento em qualquer posição, no início, meio ou fim!
Precisamos manter as propriedades da lista, 𝑥𝑖+1 suceder 𝑥𝑖.
52. Removendode uma ListaVazia
09:48
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
A remoção sempre remove um elemento específico da lista, o qual pode estar no
início, no meio ou no fim.
Cuidado: Nãose pode remover de uma lista vazia!!
53. 09:48 53 Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Removendo do Final
61. ListaEstáticaSequencial
09:48
Vantagens:
Acesso direto indexado a qualquer elemento da lista
Tempo constante para acessar o elemento 𝑖 dependerá
somente do índice.
Desvantagem:
Movimentação quando eliminado/inserido elemento
Definição prévia do tamanho máximo
Quandousar:
Listas pequenas
Inserção/remoção no fim da lista
Tamanho máximo bem definido
A busca é a operação mais frequente
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
63. 09:48
O que é uma Fila?
Estrutura de Dados: Aula 05 - Filas Estáticas
64. O queé uma Fila?
09:48
Uma fila é uma estrutura de
dadosdinâmica que admite remoção de
elementos e inserção de novos objetos.
Estrutura de Dados: Aula 05 - Filas Estáticas
65. QuandoutilizarumaFila?
09:48
Quando se quer registrar a ordem de
chegada de componentes.
Controle de fluxo
Recursos compartilhados
Impressora, transações de Banco de Dados
Estrutura de Dados: Aula 05 - Filas Estáticas
66. OperaçõesBásicasemuma Fila
09:48
Estrutura de Dados: Aula 04 - Lista Estática Sequencial
Criação da fila
Inserção de um elemento no final
Remoção de um elemento do início
Aceso ao elemento do início
Destruição da fila
67. Fila:Características
09:48
O elemento removido é o que está na estruturahá mais tempo
O primeiro objeto inserido na fila é também o primeiro a ser removido
𝐹𝐼𝐹𝑂 (𝐹𝑖𝑟𝑠𝑡‐ 𝐼𝑛‐ 𝐹𝑖𝑟𝑠𝑡‐ 𝑂𝑢𝑡)
Estrutura de Dados: Aula 05 - Filas Estáticas
96. 09:48
O que é uma Pilha?
Estrutura de Dados: Aula 06 - Pilhas Estáticas
97. O queé uma Pilha?
09:48
Uma pilha é uma estrutura de dados em
que todo o acesso a seus elementos é feito
através do seu topo
Estrutura de Dados: Aula 06 - Pilhas Estáticas
98. OperaçõesBásicasemuma Pilha
09:48
Criação da pilha
Inserção de um elemento no início
Remoção de um elemento do início
Aceso ao elemento do início
Destruição da pilha
Estrutura de Dados: Aula 06 - Pilhas Estáticas
99. Pilha:Características
09:48
O elemento removido é o que está na
estrutura há menos tempo
O último objeto inserido na pilha é também
o primeiro a ser removido
𝐿𝐼𝐹𝑂 (𝐿𝑎𝑠𝑡‐ 𝐼𝑛‐ 𝐹𝑖𝑟𝑠𝑡‐ 𝑂𝑢𝑡)
Estrutura de Dados: Aula 06 - Pilhas Estáticas
100. Pilha:Índicesde Controleda Pilha
09:48
Estrutura de Dados: Aula 06 - Pilhas Estáticas
LIMITE
Tamanho máximo que pode ser ocupado pela pilha
TOPO
Atual posição de consulta da pilha
BASE
Ponto de início da pilha
102. Identificando PalíndromoscomPilha
09:48
Estrutura de Dados: Aula 06 - Pilhas Estáticas
Relembrando...
Palíndromos são palavras/frases que são iguais quando lidas de frente para trás
Exemplos:
Ana
Arara
Rotor
Socorram me subi no onibus em marrocos
• Desconsiderando os espaços em branco
103. Balanceamentode Expressões
09:48
Pilhas podem ser utilizadas para verificar se
os parênteses em uma expressão estão
balanceados
Exemplo:
((3 + 4 + (4 ∗ 9)
ERRO: Faltam dois parênteses fechando!
Estrutura de Dados: Aula 06 - Pilhas Estáticas
104. Chamadasde Funções
09:48
O Sistema Operacional utiliza pilha
para tratar as chamadas a funções
Fazendo uso de recursividade
Estrutura de Dados: Aula 06 - Pilhas Estáticas
105. Pilha: ImplementaçãoemVetor
09:48
Supondo a pilha está armazenada em um vetor 𝑝𝑖𝑙ℎ𝑎[0. . 𝑛 − 1]
A parte do vetor ocupada pela pilha será:
Estrutura de Dados: Aula 06 - Pilhas Estáticas
106. Pilha: ImplementaçãoemVetor
09:48
A natureza dos elementos do vetor é irrelevante, eles podem ser
inteiros, caracteres, ponteiros, etc...
O índice 𝑡 indica a primeira posiçãovagada pilha
𝑡1 é o índice do topoda pilha.
A pilha está vaziase 𝑡 = 0 e cheiase 𝑡 = 𝑁
Estrutura de Dados: Aula 06 - Pilhas Estáticas