BlitzMax/Lições/Lista
Listas são estruturas de dados organizadas através da enumeração de dados. Em oposição aos vetores que são estruturas de dados estáticas, as listas são estruturas de dados dinâmicas podendo variar de tamanho desde apenas um byte até encher uma memória RAM inteira. As listas são muito usadas para evitar desperdício de memória. O BlitzMax possui comandos específicos que tratam exclusivamente de listas.
Criando uma lista
Usa-se o comando CreateList para se criar uma lista, o nome da variável tipo lista será minhaLista.
minhaLista=CreateList()
Adicionando itens
Com a lista criada, agora precisamos fazer uso dela, para isso inicialmente vamos adicionar alguns itens na lista, podemos adicionar itens no início ou no final da lista. Claro, se a lista estiver vazia adicionar no início ou no fim não fará a menor diferença.
Adicionando no início
Para adicionarmos um valor no início da lista usamos o comando ListAddFirst, no primeiro parâmetro temos a lista a qual queremos adicionar o item, no segundo campo temos o item em si. No BlitzMax utilizamos também o comando EachIn para percorrer cada membro da lista dentro do For.
minhaLista=CreateList() ListAddFirst(minhaLista, "um") ListAddFirst(minhaLista, "dois") ListAddFirst(minhaLista, "tres") For minhaString$=EachIn minhaLista Print(minhaString$) Next
Os elementos foram exibidos na seguinte ordem: três (último a ser colocado), dois (segundo a ser colocado), um (primeiro a ser colocado). A ordem de inserção dos elementos foi trocada porque eles foram adicionados sempre ao início da lista.
Adicionando no final
Para adicionarmos um valor no final da lista usamos o comando ListAddLast, no primeiro parâmetro temos a lista a qual queremos adicionar o item, no segundo campo temos o item em si.
minhaLista=CreateList() ListAddLast(minhaLista, "um") ListAddLast(minhaLista, "dois") ListAddLast(minhaLista, "tres") For minhaString$=EachIn minhaLista Print(minhaString$) Next
Os elementos foram exibidos na seguinte ordem: um (primeiro a ser colocado), dois (segundo a ser colocado), três (terceiro a ser colocado). Apesar da inserção dos códigos estar na mesma ordem do código anterior, os elementos foram exibidos na ordem contrária, já que foram adicionados ao final da lista.
Ordenando uma lista
A ordenação é a forma de organizar a lista, ela pode ser com inteiros, strings ou floats em ordem crescente ou decrescente. No BlitzMax utiliza-se o comando SortList para ordenar as listas, o primeiro parâmetro é o nome da lista a ser ordenada, o segundo parâmetro é o tipo da ordenação True (se for crescente) ou False (se for decrescente)
minhaLista=CreateList() ListAddLast(minhaLista, "B") ListAddLast(minhaLista, "A") ListAddLast(minhaLista, "C") SortList(minhaLista, True) For minhaString$=EachIn minhaLista Print(minhaString$) Next
Após a ordenação os elementos foram exibidos na seguinte ordem: A, B, C.
Contando elementos de uma lista
Você pode saber quantos elementos tem em uma lista através da função CountList que irá retornar um inteiro, use a própria lista como parâmetro.
minhaLista=CreateList() ListAddLast(minhaLista, "B") ListAddLast(minhaLista, "A") ListAddLast(minhaLista, "C") For minhaString$=EachIn minhaLista Print(CountList(minhaLista) Next