Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Por exemplo, as B-trees são particularmente indicadas para a implementação de bases de dados , enquanto que a implementação de compiladores geralmente requer o uso de tabela de dispersão para a busca de identificadores.
Estruturas de dados e algoritmos são temas fundamentais da ciência da computação, sendo utilizados nas mais diversas áreas do conhecimento e com os mais diferentes propósitos de aplicação. Sabe-se que algoritmos manipulam dados. Quando estes dados estão organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados. A organização e os métodos para manipular essa estrutura é que lhe conferem singularidade.
(Fonte: Wikipédia)
Começando as aulas sobre as estruturas de dados mais convencionais, iremos abordar primeiramente as matrizes.
-Matrizes e vetores.
Na linguagem C e especialmente em estrutura de dados, as matrizes são mais comumente utilizadas em vetores unidimensionais, que são matrizes de uma única dimensão. A declaração destes vetores em C deve obedecer a seguinte sintaxe:
Tipo nome_vetor[tamanho];
ou
Tipo * nome_vetor;
O tipo comumente é um inteiro por ser tratar de valores numéricos a maioria das matrizes. E o tamanho representa a quantidade de elementos que esta matriz irá conter, no caso de ponteiro o tamanho inicial não é definido e deverá ser alocado o espaço que se deseja. É importante dizer que na linguagem c as matrizes começam pelo índice 0 que guarda o primeiro elemento da matriz. Para entender melhor, considere que seja necessário declarar um vetor do tipo inteiro que contenha 10 elementos. Isto é feito da seguinte forma:
int vetor_exemplo[9];
Isso por que a matriz “vetor_exemplo” vai de 0 a 9, ou seja, contém 10 elementos. Também é possível inicializar o vetor no momento de sua declaração. Para isso veja a sintaxe abaixo:
Tipo nome_vetor[tamanho]={lista_de_valores};
Sendo que todos os elementos da lista de valores devem ser separados por virgula e serem todas do mesmo tipo de dados especificado. A seguir temos a declaração do “vetor_exemplo” com os valores atribuídos.
int vetor_exemplo[9]={0,1,2,3,4,5,6,7,8,9};
Exemplo de um programa completo utilizando vetores e outros conceitos estudados até o momento.
- Matrizes em forma de vetor através de ponteiros
As matrizes que são bidimensionais (ex.: m[2][2]) podem ser guardadas em forma de um vetor unidimensional, e assim facilita a alocação, e tudo isto é feito através de ponteiros.
Veja o exemplo para ter uma melhor noção: [LINK AQUI]
Para manipular as matrizes em forma de ponteiro é usada uma fórmula para percorrer a matriz e ter a posição equivalente dentro do vetor.
ex.:
Tem estas duas formas, uma matriz e um vetor:
int m[ ][ ]
int m[ ]
E para cada elemento da matriz matemática, se tem o elemento equivalente na matriz em c :
M i,j = m[i][i]
para saber a mesma posição da matriz matemática no vetor, é usada a seguinte fórmula:
M i,j = m[k] para: k = i * m + j;
Onde m é o número de colunas da matriz, desta forma pode-se colocar uma matriz inteira dentro de um vetor ou ponteiro, e da mesma forma encontrar este elemento com essa fórmula.
ex.:
for(i=0 ; i<n ; i++){
for(j=0 ; j<m ; j++){
scanf("%i", &a);
k = i * m +j;
pv[k] = a;
}
}
Este trecho de código usa dois for para percorrer a matriz que está sendo lida do teclado, e logo em seguida usa a fórmula para jogar este mesmo elemento dentro do vetor na posição k.
Coloque aqui o seu email