Vous êtes sur la page 1sur 27

1.

Estrutura de Dados

Jayme Luiz Szwarcfiter Fabio Protti

1.1

Aula 1: Introduo

Apresentao dos algoritmos Algoritmo de inverso de uma seqncia Algoritmo de clculo de fatorial

1.2

Composio do Curso 4 mdulos, total de 36 aulas No decorrer das aulas: Exerccios a resolver Exerccios finais Provas

1.3

Mdulo 1: Conceitos Bsicos e Listas Lineares Aula 1: Introduo Aula 2: Recursividade Aula 3: Complexidade de Algoritmos Aula 4: Notao O Aula 5: Listas Lineares Aula 6: Manipulao de Listas Lineares Aula 7: Caso Mdio da Busca Linear Aula 8: Busca Binria Aula 9: Ordenao de Listas Lineares

1.4

Mdulo 2: Pilhas, Filas e Alocao Encadeada Aula 10: Pilhas Aula 11: Filas Aula 12: Lista Encadeada Aula 13: Listas Simplesmente Encadeadas Aula 14: Manipulao de Listas Simplesmente Encadeadas Aula 15: Listas Duplamente Encadeadas Aula 16: Manipulao de Listas Duplamente Encadeadas

1.5

Mdulo 3: rvores e Listas Encadeadas Aula 17: Conceitos de rvores e rvores Binrias Aula 18: Propriedades de rvores Binrias Aula 19: Percursos em rvores Binrias Aula 20: rvores Binrias de Busca Aula 21: Freqncias de Acesso Diferenciadas Aula 22: Algoritmo de Obteno da rvore tima Aula 23: rvores Balanceadas Aula 24: Incluso em rvores AVL Aula 25: rvores Graduadas e Rubro-Negras Aula 26: rvores B Aula 27: Manipulao de rvores B

1.6

Mdulo 4: Listas de Prioridades, Tabelas de Disperso, Processamento de Cadeias Aula 28: Listas de Prioridades Aula 29: Manipulao de Listas de Propriedades Aula 30: Tabelas de Disperso Aula 31: Encadeamento Exterior Aula 32: Encadeamento Interior Aula 33: rvores Digitais Aula 34: Processamento de Cadeias Aula 35: rvores de Huffman Aula 36: Algoritmo de Huffman

Referncias

1.7

A.V.Aho, J.E.Hopcroft, J.D.Ullman, The Design and Analysis of Computer Algorithms, Addison Wesley, Reading, Ma, 1974 T.H.Cormen, C.E.Leiserson, R.I.Rivest, Introduction to Algorithms, MIT Press, Cambridge, Mass. e McGraw-Hill, New York, NY, 1990 C.Froidevaux, M.-C.Graudel, M.Sorla, Types de Donns et Algorithmes, McGrawHill, 1990 D.E.Knuth, The Art of Computer Programming 1: Fundamental Algorithms, Addison Wesley, Reading, Ma, 1968 D.E.Knuth, The Art of Computer Programming 3: Sorting and Searching, Addison Wesley, Reading, Ma, 1973

1.8

Referncias em Lngua Portuguesa J.L.Szwarcfiter e L.Markenzon, Estrutura de Dados e seus Algoritmos, LTC Editora, Rio de Janeiro, RJ, 1994 R.E. Torada, Desenvolvimento de Algoritmos e Estruturas de Dados, McGraw-Hill e Makron do Brasil, So Paulo, SP, 191 P.A.Veloso, C.S.Santos, P.Azevedo, A.L.Furtado, Estruturas de Dados, Editora Campus, Rio de Janeiro, RJ, 1983 N.Ziviani, Projeto de Algoritmos com Implementao em PASCAL, Pioneira Informtica, So Paulo, SP, 1993

1.9

Livro Texto

J.L.Szwarcfiter e L.Markenzon, Estrutura de Dados e seus Algoritmos, LTC Editora, Rio de Janeiro, RJ, 1994

1.10

Aula 1: Introduo

Apresentao dos algoritmos Algoritmo de inverso de uma seqncia Algoritmo de clculo de fatorial

1.11

O Conceito de Algoritmo O Conceito de Algoritmo


Histrico Idia intuitiva: processo sistemtico de resolver problemas

entrada

algoritmo

sada

Problemas bsicos no estudo de algoritmos: correo


anlise

Dados

Entrada e sada constituda de dados Representao de dados no computador Manipulao de Dados

Estruturas de Dados

1.12

Apresentao dos Algoritmos Apresentao dos algoritmos


linguagens uso: linguagem tipo PASCAL, com livre formato

Descrio da Linguagem
Algoritmo dividido em blocos Os blocos correspondem a trechos contguos do algoritmo, tais que dois blocos so sempre: disjuntos, ou um deles contm o outro

1.13

Apresentao dos Algoritmos Na escrita, os blocos so determinados por identao, ou seja, pelo alinhamento das margens esquerdas, conforme o exemplo:

bloco 1 contm blocos 2 e 3 blocos 2 e 3 so disjuntos

1.14

Linguagem Utilizada Variveis simples A, B Exemplo: i, j Vetores x[i] Exemplo: x[5], corresponde ao 5 elemento do vetor x Matrizes x[i,j] Exemplo: x[i,3] o elemento identificado pelos ndices ( i, 3 ) da matriz x

1.15

Linguagem Utilizada Registros A localizao de um registro realizada atravs de um ponteiro. Um registro consiste de um conjunto de dados, denominados campos. Cada campo possui um nome, que o identifica. Um ponteiro indicado pelo smbolo xemplo: pt.info representa o campo info de um registro alocado no endereo contido em pt.

1.16

Linguagem Utilizada Procedimentos proc A Funes funo A(B)


um procedimento chamado atravs de uma referncia a seu nome
exemplo

B corresponde ao(s) parmetros da funo

exemplo

Comentrios uma sentena iniciada por % interpretada como comentrio

os parmetros podem ser associados () a "entrada" e "sada" da funo a funo chamada atravs de uma referncia a seu nome

1.17

Linguagem Utilizada - Declaraes Declarao de atribuio smbolo := A := B Exemplos: x := 3 x := 45.y.logz x := log z


2

1.18

Linguagem Utilizada - Declaraes Declaraes Condicionais se A ento B Exemplos: se x - y > 54 ento a := z se x > y ento x := t[y] i := i + 1 se x - 3 45 ento x := y a := c + 1 seno i:= i +1 x := a + i
2

se A ento B seno C Exemplo:

Linguagem Utilizada - Declaraes Declaraes de Iterao enquanto A faa B Exemplos:

1.19

enquanto i < j faa i := i + k enquanto i 0 faa x := a [ i, j ] i := i -1 para i = 1, 2, ..., n faa j := 3a - i para x CONJUNTO faa listar x para x C faa remover x de C x := x + 1

para A faa B Exemplos:

1.20

Linguagem Utilizada - Declaraes Declaraes de Iterao repetir . . . at B Exemplo: repetir listar x[ i, j ] i := i - a j := j + 1 at que i < j

1.21

Linguagem Utilizada - Declaraes Declarao de Parada pare Exemplo: se i < 0 ento pare Observao: paradas podem ser explcitas ou implcitas

1.22

Exemplo: Inverso de seqncias

Seja uma seqncia de elementos armazenados no vetor S[i], 1 i n. O problema consiste em inverter a seqncia, isto , consider-la de trs para frente. S(i) 5 2 7 1 0 6 S(i) 6 0 1 7 2 5

1.23

Exemplo: Inverso de seqncias Notaes Piso de x: x representa o maior inteiro x Exemplos: 3,2 = 3 3/4 = 0 3=3 Teto de x: x representa o menor inteiro x Exemplos: 3,2= 4 3/4 = 1 3 = 3 Propriedade: n/2 + n/2 = n

1.24

Exemplo: Inverso de seqncias Algoritmo 1.1: Inverso de uma seqncia para i = 1, ..., n/2 faa temp := S[ i ] S[ i ] := S[ n-i+1 ] S[ n-i+1 ] := temp i=1 i=2 S[1] i=1 S[2] i=2

. .
temp

i=2

S[n-1] i=1

S[n]

1.25

Exemplo: Inverso de seqncias Exemplo: 2 5 1 1 2 5 1 3 4 temp 4 4 5 1 3 2 temp 4 3 1 5 2 5 temp 3 4 2 2 5 1 3 4 2 temp 5 4 5 1 3 2 4 3 1 3 2 5 temp 4 5 1 3 4 2 temp 6 3

1.26

Exemplo: Inverso de seqncias

S[ 1 ] S[ 2 ] S[ 3 ] S[ 4 ] S[ 5 ]

temp

Inverter

Voltar