Resumo: Estrutura de Dados
Por: marisaluiza • 5/11/2017 • Dissertação • 1.900 Palavras (8 Páginas) • 372 Visualizações
Estrutura de Dados= são formas otimizadas de armazenamento e tratamento das informações eletronicamente.
Transformação de uma forma de armazenamento já conhecida e utilizada no mundo real adaptada para o mundo computacional.
Tipo de dado= define o conjunto de valores que uma variável pode assumir, bem como o conjunto de todas as operações que podem atuar sobre qualquer valor daquela variável.
*Tipos atômicos= elementos do conjunto de valores são indivisíveis(inteiro, real, caractere e lógico.)
*Tipos complexos= elementos do conjunto de valores podem ser decompostos em partes mais simples. Se um tipo de dado pode ser decomposto, então o tipo de dado é dito estruturado, e a organização de cada componente e as relações entre eles constituem a disciplina de Estrutura de Dados.
Dados Homogêneos= Uma estrutura de dados, que utiliza somente um tipo de dado. Variáveis compostas homogêneas correspondem a posições de memória, identificadas por um mesmo nome, individualizado por índices e cujo conteúdo é composto do mesmo tipo.
Vetor= é uma estrutura de dados linear que necessita de somente um índice para que seus elementos sejam endereçados. Armazena uma lista de valores do mesmo tipo, ou seja, armazena mais de um valor em uma mesma variável. (seu conteúdo é dividido em posições).
Cada uma das células de um vetor possui seu próprio endereço, ou índice, através do qual pode ser referenciada.
Algumas características:*Alocação estática (deve-se conhecer as dimensões da estrutura no momento da declaração) *Estrutura homogênea. *Alocação seqüencial (bytes contíguos) *Inserção/Exclusão
Os elementos do vetor estão dispostos na memória um ao lado do outro e cada elemento tem o seu tamanho fixo.
Sendo n o elemento, a fórmula se dá por Posn = endereço Inicial + ( (n - 1) * tamanho do tipo do elemento).
Matriz= é um arranjo bidimensional ou multidimensional de alocação estática e seqüencial.
Possui um índice para referenciar a linha e outro para referenciar a coluna.Tem tamanho fixo, mesmo tipo de dados, cada célula contém somente um valor e os tamanhos dos valores são os mesmos.(char ocupa 1 byte e um int 4 bytes)
Os elementos ocupam posições contíguas (unidas)na memória
Posij = endereço inicial + ((i-1) * C * tamanho do tipo do elemento) + ((j-1) * tamanho do tipo do elemento).
C permite ainda trabalhar com matrizes de várias dimensões.
Ponteiro= é um tipo de dado que aponta para uma posição de memória.
Uma variável do tipo ponteiro guardará um endereço de memória
&= Ele é um operador unário que devolve o endereço ( posição ) na memória de seu operando. Por exemplo: m = &count; põe o endereço na memória da variável count em m.
*= é um operador unário que devolve o valor da variável localizada no endereço que o segue. Por exemplo, se m contém o endereço da variável count: q = *m; coloca o valor de count em q.
Quando se quiser trabalhar com o endereço armazenado no ponteiro, utiliza-se o seu nome sem o asterisco na frente.
Se deseja trabalhar com a memória apontada pelo ponteiro, alterando ou acessando este valor, deve-se colocar um asterisco antes do nome do ponteiro.
Variáveis por referência= podem ter seu conteúdo alterado por funções e mantêm este valor após o término da função.
Na declaração de uma função, deve-se utilizar o asterisco antes do nome do parâmetro, indicando que está sendo mudado o valor naquele endereço passado como parâmetro.
Um ponteiro para int ocupa 4 bytes, uma operação de soma neste ponteiro irá acrescentar 4 posições (unidades) na memória.
Vetores nada mais são do que ponteiros com alocação estática de memória, logo, todo vetor na linguagem C é um ponteiro.
Dados Heterogêneos= utilização de mais de um tipo básico de dado (inteiro ou caractere, por exemplo) para representar uma estrutura de dados. -> registro
Estrutura de dados que agrupa dados de tipos distintos ou, mais raramente, do mesmo tipo.
Cada tipo de dado armazenado em um registro é chamado de campo.
A linguagem C utiliza as estruturas para representar um registro.
Para se fazer o acesso de um único campo deve-se utilizar o nome da estrutura seguido de um ponto e do nome do campo desejado da estrutura.
Uso de Memória
Alocação estática= ocorre em tempo de compilação,é necessário que se definam seu tipo e tamanho.
Alocação dinâmica= ocorre em tempo de execução, ou seja, as variáveis e estruturas são declaradas sem a necessidade de se definir seu tamanho, pois nenhuma memória será reservada ao colocar o programa em execução.No momento em que uma variável ou parte de uma estrutura precise ser utilizada, sua memória será reservada e, no momento em que não for mais necessária, deve ser liberada.
Pode ser realizada com apenas quatro chamadas a funções:
Malloc= permite que seja feita a alocação de uma nova área de memória para uma estrutura. Deve-se informar para a função a quantidade de bytes para alocação. A função irá retornar, se existir memória suiciente, um endereço que deve ser colocado em uma variável do tipo ponteiro. Como a função retorna um ponteiro para o tipo void, deve-se utilizar o typecast, transformando este endereço para o tipo de ponteiro desejado.
Calloc= tem a mesma funcionalidade de malloc, exceto que devem ser fornecidos o tamanho da área e a quantidade de elementos. O espaço inicializa com zeros.
Realloc= permite que uma área previamente alocada seja aumentada ou diminuída. Expandir uma área alocada.
Free= libera uma área alocada previamente com a função malloc, calloc ou realloc. Deve ser passado para a função o endereço, que se deseja liberar.
Pilha= é um conjunto ordenado de itens, no qual novos itens podem ser inseridos e a partir do qual podem ser eliminados itens de uma extremidade, chamada topo da pilha.
Inserções e eliminações são feitas em apenas uma das extremidades, a última informação a entrar é a primeira a sair.
...