Untitled - Grupo A

Propaganda
capítulo
1
introdução
A representação dos valores manipulados por uma
aplicação pode ser feita por diferentes estruturas de dados.
As principais linguagens de programação oferecem um elenco
de tipos primitivos, como inteiro (para valores inteiros), real
(para valores fracionários), lógico (para valores booleanos) e
caractere (para representar caracteres). Oferecem, ainda, alguns
tipos estruturados para representar conjuntos de valores, como
arranjos (também denominados de vetores e matrizes),
registros, conjuntos e seqüências.
■ ■
30
Estruturas de Dados
Entretanto, os tipos estruturados presentes nas linguagens de programação
têm grandes limitações quando se quer representar estruturas de dados mais
complexas, que envolvem diferentes tipos e associações entre eles. Para tornar os programas mais eficientes, surgiu a necessidade de serem definidas estruturas de dados mais apropriadas, com a definição de operações eficientes
para cada uma delas.
Neste livro são analisadas duas estruturas de dados que, embora muito comuns em programas de aplicação, não são fornecidas diretamente pelas linguagens de programação: listas lineares e árvores. Elas são compostas
por conjuntos de elementos onde são armazenadas as informações, denominados nodos. O que as diferencia entre si é o relacionamento lógico entre
estes nodos: nas listas lineares o relacionamento é de ordem; nas árvores, existe um relacionamento de subordinação.
Para cada uma destas estruturas serão analisadas formas de organizar os dados, como armazenar fisicamente a estrutura, e algoritmos que implementam
as principais operações para sua manipulação.
O objetivo deste livro é servir como apoio a disciplinas de Estruturas de
Dados em cursos de graduação em Ciência da Computação. Não se pretende, de modo algum, esgotar a análise destas estruturas de dados. Para um
estudo mais aprofundado dos assuntos apresentados o leitor deve consultar
as leituras recomendadas. É importante ressaltar que é considerada somente
a representação de informações em memória principal. Técnicas de armazenamento em memória secundária são tratadas em outra(s) disciplina(s), como
Organização de Arquivos.
Capítulo 1
1.1
Introdução
31
pré-requisitos
Para acompanhar este livro são necessários os seguintes conhecimentos
prévios:
■
■
■
programação básica, utilizando alguma linguagem de programação procedimental (Pascal, C, Fortran, …);
além da utilização de variáveis simples, o conhecimento de estruturas presentes nas linguagens de programação, como arranjos e registros;
utilização de ponteiros e de alocação dinâmica de variáveis.
1.2
estrutura do texto
Os demais capítulos deste livro estão estruturados como segue.
No capítulo 2 são brevemente apresentados alguns conceitos básicos, necessários para o desenvolvimento do restante do texto. Inicialmente é visto o
conceito de Tipos Abstratos de Dados, utilizado em linguagens de programação e como uma das bases para as estruturas estudadas a seguir. Todos os algoritmos apresentados utilizam este conceito, o que facilita a sua implementação. Em seguida são analisadas duas formas para armazenar fisicamente
as estruturas vistas a seguir. Em cada uma delas serão analisadas estas duas
formas de armazenamento físico.
A partir do capítulo seguinte são detalhadas duas estruturas de dados que
têm larga utilização em problemas de aplicação. São analisadas as diferentes
formas de armazenamento físico e as operações básicas que podem ser executadas sobre elas, com apresentação dos algoritmos correspondentes.
O capítulo 3 detalha a estrutura particular denominada Lista Linear. Filas e
pilhas, tipos particulares de listas com limitações na disciplina de acesso, são
analisadas no capítulo 4.
O capítulo 5 introduz a estrutura denominada árvore. Um tipo particular
denominado árvore binária é detalhado no capítulo 6. Árvores Binárias de
Pesquisa e árvores AVL, tipos especiais de árvores binárias, são também analisadas neste capítulo.
32
Estruturas de Dados
No final de cada capítulo é apresentada uma lista de exercícios sugeridos, agrupados por assunto, finalizando com algumas aplicações.
Todos os algoritmos ao longo do texto são escritos na pseudolinguagem
apresentada no Anexo.
Finalmente, as leituras recomendadas reúnem alguns livros disponíveis no Brasil, que podem complementar os conceitos aqui apresentados. Selecionamos
somente livros em português, com exceção de três (Aho 1983, Knuth 1968 e
Knuth 1973) que influenciaram a maior parte das pesquisas em estruturas de
dados realizadas ao longo dos últimos anos.
Download