Divagações...

quarta-feira, 24 de fevereiro de 2010

Estruturas de dados - conceitos

Para a estruturação de dados de forma sistematica e organizada existem varias estruturas de dados, cada qual com uma finalidade especifica. Alem das estruturas basicas, como os vetores, matrizes e structs ( registros ), é possivel combiná-las, tal como um vetor de registros por exemplo, para formar uma estrutura de dados mais complexa. A maneira de organizar os dados de um programa pode ser modelado em termos dessas estruturas fornecidas pela linguagem.



Para ir além e construir estruturas mais eficazes e destinadas para cumprir determinadas tarefas de modo mais intuitivo para o programador, pode-se utilizar do conceito de ponteiros, vistos em C e C++.

A fim de conferir maior entendimento na confecção das estruturas de dados mais complexas é necessario esclarecer o conceito de ponteiros em C e C++. Assim, ponteiros consistem em variaveis de um tipo especifico com o operador * (asterisco ) precendendo o nome da variavel, que pode ser do tipo inteiro ( int ), ponto flutuante ( float ) ou double. O asterisco serve para diferenciar os ponteiros de outras variaveis, notação esta conveniente para denotar uma referencia, assim como o operador -> (ponteiro para membro) que indexa a refencia de um ponteiro ao conteudo que referencia em uma struct.
exemplos:

int valor = 10;
int *pont, **pont1; // ponteiro para ponteiro, no caso de **
float *vetor;

pont = &valor; printf("O ponteiro contem o valor: %d", *pont );

// criação de um vetor de tamanho N em tempo de execução
vetor =(float *) malloc(sizeof(float)*N); // uma outra maneira de criar um vetor a medida que o programa manipula dados e o valor de N seja conhecido;

Ponteiros são utilizados na confecção das seguintes estruturas de dados, as quais são as mais conhecidades:
pilhas, filas, listas encadeadas, arvores ( binarias de busca, AVL, B ), alem de tecnicas de hashing.

Nos proximos posts abordarei cada uma delas, exemplificando seus usos e como implementa-las em C. A medida que o tempo permitir vou postar tambem os codigos em C++ com as estruturas usando classes e objetos.

Nenhum comentário:

Postar um comentário