apostila de estruturas de dados - .a linguagem c, assim como as linguagens fortran e pascal,...

Download Apostila de Estruturas de Dados - .A linguagem C, assim como as linguagens Fortran e Pascal, s£o

Post on 09-Feb-2019

216 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Apostila de

Estruturas de Dados

Profs. Waldemar Celes e Jos Lucas Rangel PUC-RIO - Curso de Engenharia - 2002

Apresentao A disciplina de Estruturas de Dados (ED) est sendo ministrada em sua nova verso desde o segundo semestre de 1998. Trata-se da segunda disciplina de informtica oferecida no curso de Engenharia da PUC-Rio. Na primeira disciplina, Introduo Cincia da Computao (ICC), so apresentados os conceitos fundamentais de programao. ICC, em sua verso mais nova, utiliza a linguagem Scheme, de fcil aprendizado, o que permite a discusso de diversos conceitos de programao num curso introdutrio. Isso acontece porque Scheme, como a linguagem LISP da qual descende, uma linguagem funcional, baseada em conceitos familiares aos alunos, como a definio de funes e sua aplicao em expresses que devem ser avaliadas. O enfoque do curso de Estruturas de Dados diferente. Discutem-se tcnicas de programao e estruturao de dados para o desenvolvimento de programas eficientes. Adota-se a linguagem de programao C. Apesar de reconhecermos as dificuldades na aprendizagem da linguagem C, optamos por sua utilizao neste curso simplesmente porque C a linguagem bsica da programao do UNIX, da Internet, do Windows, do Linux. Alm de C, usam-se nestes sistemas e em aplicaes desenvolvidas para eles linguagens derivadas de C, como C++ e Java. Um ponto adicional a favor da escolha de C que o estudo de vrias disciplinas posteriores a ED ser facilitado se os alunos j puderem programar com desenvoltura nessa linguagem. Este curso foi idealizado e montado pelo Prof. Jos Lucas Rangel. Neste semestre, estamos reformulando alguns tpicos, criando outros e alterando a ordem de apresentao. Esta apostila foi reescrita tendo como base a apostila do Prof. Rangel, utilizada nos semestres anteriores. O curso est dividido em trs partes. A Parte I apresenta os conceitos fundamentais da linguagem C e discute formas simples de estruturao de dados; a Parte II discute as estruturas de listas e rvores, e suas aplicaes; e a Parte III discute algoritmos e estruturas de dados para ordenao e busca. A apostila apresenta todos os tpicos que sero discutidos em sala de aula, mas recomendamos fortemente que outras fontes (livros, notas de aula, etc.) sejam consultadas.

Rio de Janeiro, 19 de fevereiro de 2002 Waldemar Celes

ndice 1. Conceitos fundamentais........................................................................1-1

1.1. Introduo ........................................................................................................... 1-1 1.2. Modelo de um computador .................................................................................. 1-1 1.3. Interpretao versus Compilao ....................................................................... 1-3 1.4. Exemplo de cdigo em C .................................................................................... 1-4 1.5. Compilao de programas em C.......................................................................... 1-6 1.6. Ciclo de desenvolvimento .................................................................................... 1-8

2. Expresses .............................................................................................2-1 2.1. Variveis............................................................................................................... 2-1 2.2. Operadores .......................................................................................................... 2-4 2.3. Entrada e sada bsicas....................................................................................... 2-8

3. Controle de fluxo....................................................................................3-1 3.1. Decises com if .................................................................................................... 3-1 3.2. Construes com laos........................................................................................ 3-4 3.3. Seleo ................................................................................................................ 3-8

4. Funes ..................................................................................................4-1 4.1. Definio de funes............................................................................................ 4-1 4.2. Pilha de execuo ................................................................................................ 4-3 4.3. Ponteiro de variveis............................................................................................ 4-6 4.4. Recursividade....................................................................................................... 4-10 4.5. Variveis estticas dentro de funes ................................................................ 4-11 4.6. Pr-processador e macros .................................................................................. 4-12

5. Vetores e alocao dinmica ................................................................5-1 5.1. Vetores ................................................................................................................. 5-1 5.2. Alocao dinmica ............................................................................................... 5-3

6. Cadeia de caracteres .............................................................................6-1 6.1. Caracteres............................................................................................................ 6-1 6.2. Cadeia de caracteres (strings) ............................................................................. 6-3 6.3. Vetor de cadeia de caracteres ............................................................................. 6-11

7. Tipos estruturados.................................................................................7-1 7.1. O tipo estrutura..................................................................................................... 7-1 7.2. Definio de "novos" tipos.................................................................................... 7-4 7.3. Vetores de estruturas........................................................................................... 7-6 7.4. Vetores de ponteiros para estruturas................................................................... 7-7 7.5. Tipo unio............................................................................................................. 7-9 7.6. Tipo enumerao ................................................................................................ 7-10

8. Matrizes...................................................................................................8-1 8.1. Alocao esttica versus dinmica ...................................................................... 8-1 8.2. Vetores bidimensionais Matrizes....................................................................... 8-2 8.3. Matrizes dinmicas............................................................................................... 8-4 8.4. Representao de matrizes ................................................................................. 8-6 8.5. Representao de matrizes simtricas ................................................................ 8-9

9. Tipos Abstratos de Dados .....................................................................9-1

9.1. Mdulos e Compilao em Separado .................................................................. 9-1 9.2. Tipo Abstrato de Dados........................................................................................ 9-3

10. Listas Encadeadas...............................................................................10-1 10.1. Lista encadeada ................................................................................................. 10-2 10.2. Implementaes recursivas ............................................................................... 10-9 10.3. Listas genricas ................................................................................................. 10-10 10.4. Listas circulares.................................................................................................. 10-15 10.5. Listas duplamente encadeadas.......................................................................... 10-16

11. Pilhas.....................................................................................................10-1 11.1. Interface do tipo pilha ......................................................................................... 10-2 11.2. Implementao de pilha com vetor .................................................................... 10-2 11.3. Implementao de pilha com lista ...................................................................... 10-3 11.4. Exemplo de uso: calculadora ps-fixada............................................................ 10-5

12. Filas .......................................................................................................11-1 12.1. Interface do tipo fila ............................................................................................ 11-1 12.2. Implementao de fila com vetor ....................................................................... 11-2 12.3. Implementao de fila com lista ......................................................................... 11-5 12.4. Fila dupla............................................................................................................ 11-7 12.5. Implementao de fila dupla com lista ............................................................... 11-8

13. rvores..................................................................................................12-1 13.1. rvores binrias ................................................................................................. 12-2 13.2. rvores genri

Recommended

View more >