sexta-feira, 20 de março de 2009

Listas Encadeadas

Olá galera do ICC!!!

Estamos de volta e com conteúdo muito divertido, esta semana tirei para estudar um pouco sobre listas em C e é muito legal. Bom para começar, sempre que queremos guardar um grupo de dados podemos utilizar vetores ou matrizes, isso faz com que você utilize um espaço contíguo na memória, que mesmo com alocação dinâmica de memória vai necessariamente ser sequencial, então podemos acessar qualquer elemento do vetor passando apenas o ponteiro para o primeiro elemento.

Até neste ponto tudo bem, mas um vetor não é uma estrutura muito flexível, é necessário definir um tamanho máximo para ele, mesmo usando alocação dinâmica para definir/alterar o tamanho do vetor isso acaba custando caro em relação a processamento e uso da região da memória livre reservada para execução do programa (Heap). Isso pode gerar muitos problemas como estouros de memória ao tentar inserir mais um elemento em um vetor cheio (Overflow) ou então Buffer Underflow ao tentar ler um vetor vazio.

Para resolver estes problemas foram criadas as listas encadeadas, são nada mais do que uma estrura de dados com elementos ordenados do mesmo tipo. Elas podem ter o formato de filas ou pilhas, nas filas os dados são inseridos em uma estremidade e retirados na outra, conhecido como FIFO (First In, First Out) e nas pilhas os dados que são inseridos por último são retirados primeiro, conhecido como LIFO (Last In, First Out).

Uma lista encadeada pode ser inicializada sem nenhum valor e a medida que vamos inserindo elementos nela vamos alocando memória dinâmicamente, assim o risco de faltar memória diminui pois não precisamos alocar uma grande quantidade de memória que não vai ser usada depois e não corremos o risco de ocorrer overflow. Quando queremos inserir um novo elemento na lista precisamos criar um nó, que é um ponteiro com endereço de memória do elemento e o valor o valor do elemento, o controle dos dados passa a ser logico e diminui o processamento necessário para recuperar os valores armazenados.

Em breve exemplos utilizando pilhas e listas encadeadas.

Até.

Nenhum comentário:

Postar um comentário