Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTRUTURA DE DADOS
1. Introdução
1.1 Tipo de dados Abstracto -TDA
1.2 Funções
1.3 Ponteiros
1.4 Estruturas e tipos de dados definidos pelo programador
1.5 Estruturas de dados recursivas
2. Listas Lineares
2. 1 Listas Sequenciais
2.2 Listas ligadas
2.3 Listas Circulares
2.4 Listas duplamente ligadas
2.5 Pilhas
2.5.1 Implementação sequencial da pilha
2.5.2 Implementação dinâmica da pilha
2.6 Filas
2.6.1 Implementação sequencial da fila
2.6.2 Implementação dinâmica da fila
CC-FCUAN 2
Sumário - cont
3. Árvores
3.1 Introdução
3.2 Tipos de árvores
3.3 Árvores binárias
3.3.1 Estrutura de uma árvore binária
3.3.2 Descrição
3.3.3 Altura
3.3.4 Representação em C
3.4 Árvores Genéricas
3.4.1 Estrutura de uma árvore genérica
3.4.2 Representação em C
3.4.3 Problemas com Representação
CC-FCUAN 3
Sumário - cont
4. Gráfos
4.1 Conceitos
4.2 Representação em C
5. Ordenação
5.1 Ordenação por Selecção
5.2 Ordenação por Inserção
5.3 Shellsort
5.4 Quicksort
5.5 Heapsort
6. Pesquisa
6.1 Pesquisa Sequencial
6.2 Pesquisa Binária
6.3 Árvores de Pesquisa
6.4 Indexação
6.5 Hashing
CC-FCUAN 4
Introdução
Sumário:
1.1 Tipo de Dado Abstracto (TDA)
1.2 Funções
1.3 Ponteiros
1.4 Estruturas de Dados
1.5 Estruturas Recursivas
CC-FCUAN 5
Conceitos
• Algoritmos e Estruturas de Dados
• Estuda as técnicas computacionais para a organização e
manipulação eficiente de quaisquer quantidades de informação.
• Em um projecto de software, 2 aspectos devem ser
considerados para sua implementação:
• De que forma estão organizados os dados, qual a sua estrutura.
• Quais procedimentos actuam sobre estes dados, ou seja, que
operações podem ser realizadas sobre eles.
• Ao estudar estruturas de dados teremos sempre este par:
• Um conjunto estruturado de informações
• Uma classe de objetos ou um tipo de dados.
• Um conjunto definido de operações sobre estes dados:
• Um conjunto de métodos ou funções.
CC-FCUAN 6
Tipos de Dados
Tipo de dados de uma variáveis
define o conjunto de valores que a variável pode assumir.
Especifica a quantidade de bytes que deve ser reservadas a ela.
Tipos de dados podem ser vistos como métodos para interpretar
o conteúdo da memória do computador
Podemos ver o conceito de tipo de dados de uma outra
perspectiva: não em termos do que um computador pode fazer
(interpretar os bits …) mas em termos do que o utilizador
desejam fazer (somar dois inteiros…)
CC-FCUAN 7
Estrutura de Dados
CC-FCUAN 8
Tipos de Dados Abstractos - TDA
CC-FCUAN 9
Funções
• Conceito:
• É uma unidade autónoma de código do programa e é desenhada
para cumprir uma tarefa particular.
• Sintaxe
tipo nome_da_função (parametros){
comandos;
}
CC-FCUAN 10
Funções
• Quando uma função não retorna um valor para função que a chamou ela é
declarada como void.
• Ex:
#include<stdio.h>
void linha (char ch, int size){
int i;
for (i=1; i<= size; i++)
putchar(ch);
}
main(){
char lin;
int tamanho;
printf(“Introduza o tipo de linha”);
scanf(“%c”, &lin);
printf(“Introduza o tamanho da linha”);
scanf(“%d”, &tamanho);
linha(lin, tamanho);
getchar();
}
CC-FCUAN 11
Funções - Função com retorno
CC-FCUAN 12
Apontadores
• O objectivo:
– Armazenar o endereço de outra variável.
• Sintaxe
tipo * ptr
• ptr – é o nome da variável do tipo apontador
• tipo – o tipo da variável para qual apontará.
• * – indica que é uma variável do tipo apontador
• Exemplo 1:
char *pc;
int *pi;
float *pf;
CC-FCUAN 13
Apontadores
*pi
96 100 104 108
pi-1 pi pi+1
CC-FCUAN 15
Inicialização automática de apontadores
CC-FCUAN 16
Passagem de parâmetro
CC-FCUAN 17
Passagem por referência
CC-FCUAN 18
Estrutura de dados
• Estruturas são peças contíguas de armazenamento que contém
vários tipos de dados simples agrupados numa entidade.
• Estrutura são manifestadas através da palavra reservada struct
seguida pelo nome da estrutura e por uma área delimitada por
colchetes que contém campos.
• Exemplo:
struct pessoa {
char nome[30];
int idade;
char sexo;
};
CC-FCUAN 19
Tipo de dados definido pelo utilizador
• Para criação de novos tipos de estrutura de dados em C utiliza-se a
palavra-chave: typedef
• Exemplo:
typedef struct pessoa {
char nome[30];
int idade;
char sexo;
} PESSOA;
• Portanto, PESSOA passa ser um tipo de dado composto
CC-FCUAN 20
Estrutura de dados
• Para obter directamente o valor de um campo, a forma é
<nome_da_estrutura>.<campo>.
Exemplo 1:
PESSOA ps;
ps.idade=15;
printf(“%d”, ps.idade)
• Para obter o valor de um campo apontado por um ponteiro a forma
é
<nome_da_estrutura> -> <campo>
Exemplo 2:
PESSOA *ps;
ps->idade=15;
printf(“%d”, ps->idade)
CC-FCUAN 21
Estruturas de dados Recursivas
struct lista{
struct lista *prox;
int dado;
}
CC-FCUAN 22