Uma lista ligada é uma coleção de estruturas (nós) ordenadas não por sua localização física na memória, mas por ligações lógicas que são armazenados como parte dessas estruturas. Não é necessário que essas ligações sejam armazenadas em um local adjacente.
Listas ligadas estão entre as estruturas de dados mais fundamentais na ciência da computação. Elas são uma coleção de nós que são ligados entre si, formando uma sequência. Cada nó contém dados e um ponteiro para o próximo nó da sequência. O primeiro nó da lista é chamado de cabeça, enquanto o último nó é chamado de cauda. As listas ligadas são amplamente utilizadas devido à sua flexibilidade e eficiência na gestão de grandes quantidades de dados.
Para entender como funcionam as listas ligadas, vamos considerar um exemplo. Suponha que temos uma lista de números inteiros: 2, 3, 5, 7, 11. Podemos representar esta lista como uma lista ligada, criando um nó para cada número inteiro e ligando-os entre si. O primeiro nó conteria o valor 2 e um ponteiro para o nó seguinte, que conteria o valor 3 e um ponteiro para o nó seguinte, e assim por diante. O último nó conteria o valor 11 e um ponteiro nulo, indicando o fim da lista.
Uma vantagem das listas ligadas é que elas podem ser facilmente modificadas. Por exemplo, para inserir um novo nó com o valor 13 entre os nós que contêm 11 e 7, basta criar um novo nó com o valor 13 e actualizar os apontadores dos nós anterior e seguinte em conformidade. Da mesma forma, podemos apagar um nó actualizando os ponteiros dos nós circundantes para o ignorar.
As matrizes são outra estrutura de dados comum em informática. São colecções de elementos do mesmo tipo de dados que são armazenados em locais de memória contíguos. Para criar uma matriz de objectos, podemos definir uma classe para os objectos e depois criar uma matriz dessa classe. Por exemplo, suponha que temos uma classe chamada Pessoa com os atributos nome e idade. Podemos criar uma matriz de objectos Pessoa da seguinte forma:
“`
Person[] people = new Person[10];
“`
“`
Pessoa p1 = new Person(“Alice”, 25);
pessoas[0] = p1;
Pessoa p2 = new Person(“Bob”, 30);
pessoas[1] = p2;
“`
Para passar um array como parâmetro em JavaScript, nós simplesmente incluímos o array como um argumento na chamada da função. Por exemplo, suponha que temos uma função chamada sumArray que recebe um array de inteiros e retorna sua soma. Podemos chamar essa função assim:
“`
let array = [1, 2, 3, 4, 5];
let sum = sumArray(array);
“`
“`
let array = [
[1, 2, 3],
[4, 5, 6]
];
“`
Em C, podemos criar um vetor (que é essencialmente um array) declarando uma variável com um tipo de dados seguido de colchetes e o tamanho do vetor. Por exemplo, para criar um vector de 10 inteiros, podemos fazer isto:
““
int vec[10];
“`
Para criar um vetor de objetos em Java, podemos usar a mesma abordagem usada para criar vetores de tipos primitivos. Por exemplo, suponha que temos uma classe chamada Livro com atributos título e autor. Podemos criar um array de objetos Livro da seguinte forma:
“`
Book[] books = new Book[5];
“`
“`
Livro b1 = novo Livro(“O Apanhador no Campo de Centeio”, “J.D. Salinger”);
livros[0] = b1;
Livro b2 = novo Livro(“Matar um Pássaro Tordo”, “Harper Lee”);
livros[1] = b2;
“`
Em conclusão, as listas ligadas são uma estrutura de dados poderosa e flexível que é amplamente utilizada na ciência da computação. As matrizes são outra estrutura de dados comum utilizada para armazenar colecções de elementos do mesmo tipo de dados. Para criar matrizes de objectos, podemos definir uma classe para os objectos e, em seguida, criar uma matriz dessa classe. Podemos passar arrays como parâmetros em JavaScript e declarar arrays bidimensionais utilizando arrays aninhados. Em C, podemos criar vectores declarando variáveis com um tipo de dados seguido de parênteses rectos e o tamanho do vector.
Para aceder a um vector dentro de outro vector JavaScript, pode utilizar a indexação de vectores com parênteses rectos. Por exemplo, se você tem um array chamado `outerArray` e você quer acessar o segundo elemento de um array chamado `innerArray`, que é um elemento de `outerArray`, você pode fazer isso assim: `outerArray[1][1]`. Isso retornará o segundo elemento de `innerArray`.