Вы находитесь на странице: 1из 15

Faculdade de Informtica e Tecnologia de Pernambuco

ESTRUTURA DE DADOS

Profa. Juliana Mafra (jmafra.pe@gmail.com)

21 de Setembro de 2009

Ementa
Introduo s Estruturas de Dados

Estruturas Elementares
Algoritmos de Ordenao e Recurso rvores e Grafos Algoritmos para Estruturas Complexas

ESTRUTURA DE DADOS

Profa. Juliana Mafra

Objetivo Geral
Possibilitar aos alunos a utilizao otimizada das

diversas estruturas de dados apresentadas, levando em considerao o problema a ser resolvido ou otimizado, e tambm o contexto no qual ocorre esse problema.

ESTRUTURA DE DADOS

Profa. Juliana Mafra

Objetivos Especficos
Fornecer domnio da alocao dinmica de memria;

Apresentar

as principais estruturas de dados e suas implementaes, em termos de representao fsica e algoritmos de manipulao, guiando-se pelo conceito de tipos abstratos de dados;

Apresentar os principais processos de pesquisa e classificao de

dados;
Introduzir aspectos bsicos da complexidade de algoritmos;

Consolidar os conhecimentos sobre programao previamente

adquiridos, utilizando estruturas de dados em aplicaes particulares.


4 ESTRUTURA DE DADOS Profa. Juliana Mafra

Metodologia
A

disciplina ser trabalhada com aulas expositivo-dialogadas, onde sero fornecidos os componentes tericos e ser feita a prtica de exerccios.

ESTRUTURA DE DADOS

Profa. Juliana Mafra

Bibliografia
Livro Texto:
Veloso, P.A . da S. Estrutura de Dados Editora Campus,

1983.
Livros de Referncia:
Horowitz, E e Shani, S. - Fundamentos de Estruturas de

Dados - Editora Campus, Rio de Janeiro, 1983.


Referncias Complementares:
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest,

Clifford Stein - Algoritmos: Teoria e Prtica, Editora Campus, Rio de Janeiro, 2002.

ESTRUTURA DE DADOS

Profa. Juliana Mafra

Introduo s Estruturas de Dados


Tipo Abstrato de Dados (TDA)

ESTRUTURA DE DADOS Profa. Juliana Mafra

Tipos de Dados
Define a forma como um dado deve ser armazenado ou

recuperado, bem como os possveis valores que ele pode assumir e as operaes que podem ser efetuadas sobre os mesmos.
Exemplo em Pascal:
integer - permite valores inteiros e operaes de adio, multiplicao,

subtrao e diviso; string - permite valores literais e operaes de concatenao;

Obs. Esses tipos esto intrinsecamente relacionados

com o hardware.
8 ESTRUTURA DE DADOS Profa. Juliana Mafra

Tipo Abstrato de Dados (TAD)


Um tipo

abstrato de dados (TAD) a especificao matemtica de um conjunto de dados e das operaes que podem ser executadas sobre esses dados.

O conceito de tipo de dado abstrato dissociado do hardware. TAD define o que cada operao faz, mas no como faz.

Assim,

um mesmo tipo abstrato de dados pode ser concretizado (ou implementado) de diversas formas.
Profa. Juliana Mafra

ESTRUTURA DE DADOS

Tipo Abstrato de Dados (TAD)


TADs so materializados pelas estruturas de dados.
Lista Encadeada (implementao com referncias) Lista com alocao esttica (implementao usando array)

Estruturas de dados so formas genricas de se estruturar

informao de modo a serem registradas e processadas pelo computador.


Contudo, estas s

adquirem significado quando associadas a um conjunto de operaes, que visam, de um modo geral, manipul-las (algoritmos).

10

ESTRUTURA DE DADOS

Profa. Juliana Mafra

TAD em C
Uma boa tcnica de programao implementar os TADs em

arquivos separados do programa principal.


Para isso, geralmente separa-se a declarao e a implementao

do TAD em dois arquivos:


NomeDoTAD.h: com a declarao NomeDoTAD.c: com a implementao

O programa ou outros TADs que utilizam o seu TAD devem dar

um #include no arquivo.h

11

ESTRUTURA DE DADOS

Profa. Juliana Mafra

TAD:Exemplo
Implemente um TAD ContaBancaria, com os campos nmero e

saldo onde os clientes podem fazer as seguintes operaes:


Iniciar uma conta com um nmero e saldo inicial Depositar um valor Sacar um valor

Imprimir o saldo

Faa um pequeno programa para testar o seu TAD.

12

ESTRUTURA DE DADOS

Profa. Juliana Mafra

ContaBancaria.h
// definio do tipo typedef struct{

int numero;
double saldo; }ContaBancaria;

// cabealho das funes


void Inicializa(ContaBancaria* conta, int numero, double saldo); void Deposito(ContaBancaria* conta, double valor); void Saque(ContaBancaria* conta, double valor);

void Imprime(ContaBancaria conta);

13

ESTRUTURA DE DADOS

Profa. Juliana Mafra

ContaBancaria.c
#include <stdio.h> #include "ContaBancaria.h void Inicializa(ContaBancaria* conta, int numero, double saldo) { (*conta).numero = numero;

(*conta).saldo = saldo;
} void Deposito(ContaBancaria* conta, double valor){ (*conta).saldo += valor; } void Saque(ContaBancaria* conta, double valor){ (*conta).saldo -= valor; } void Imprime(ContaBancaria conta){

printf(" Numero: %d \n", conta. numero);


printf(" Saldo: %f \n", conta.saldo); }
14 ESTRUTURA DE DADOS Profa. Juliana Mafra

Main.c
#include <stdio.h> #include <stdlib.h> #include "ContaBancaria.h int main(int argc, char *argv[]) { ContaBancaria conta1; Inicializa(&conta1,918556,300.00);

printf("\n Antes da movimentacao: \n");


Imprime(conta1); Deposito(&conta1, 50.00); Saque(&conta1, 70.00); printf("\n Depois da movimentacao: \n"); Imprime(conta1); }

15

ESTRUTURA DE DADOS

Profa. Juliana Mafra