| Inúmeros
tipos de dados podem ser representados por listas. Suponhamos, por exemplo,
que você precise fazer um programa que cadastre um número
indefinido de pessoas. Para isso, você não irá criar
uma matriz ou vetor, pois mesmo que você crie 1000 posições,
isso irá consumir muita memória, desde o início do
processo, sem contar a possibilidade de se ter 900 pessoas, ou até
mesmo 1500 pessoas, ou seja, o valor é variável. Nesse caso,
o ideal é criar uma lista
encadeada, que é manipulada de forma dinâmica. Outros
exemplos de sistemas de informação que podem utilizar listas
são: informações sobre os funcionários de
uma empresa, notas de alunos, itens de estoque etc.
As listas
podem ser implementadas de várias maneiras, tanto em uma linguagem
de programação
procedural como em uma linguagem de programação
funcional.
As listas
são estruturas
dinâmicas, em oposição aos vetores (arrays), os
quais são estruturas
estáticas e contém um conjunto especí?co de dados.
Virtualmente, uma lista pode conter infinitos itens. As operações
sobre listas são limitadas ao tipo de dados que uma lista contém.
Por exemplo, listas de dados numéricos podem ser tratadas matematicamente,
enquanto listas de caracteres podem ser ordenadas, concatenadas. O conjunto
de números [20, 13, 42, 23,54] é uma lista numérica
de inteiros; [‘a’, ‘d’, ‘z’, ‘m’,
‘w’, ‘u’] é uma lista de caracteres; e
["maçã”, "abacaxi”, "pera"]
é uma lista de frutas. Sendo que n>= 1, n1 é o primeiro
item da lista e xn o último item da lista.
As listas são importantes, pois constituem uma forma simples
de interligar os itens de um conjunto, agrupando informações
referentes a um conjunto de elementos que se relacionam entre
si de alguma forma.
|
As listas são
úteis em aplicações tais como manipulação
simbólica, em que se manipulam as variáveis em expressões
algébricas, a gerência de memória, que define as prioridades
da memória do computador ou outro dispositivo, simulação,
e onde é possível juntar informações sequenciais
ou dinâmicas para realizar uma simulação e compiladores,
que gravam uma sequência de procedimentos para transformar o programa
em um software executável. |