Lua: https://www.lua.org/
Library to Lua Programming Language that aims to provide most used data structures and algorithms.
Criar um repositorio independente e aberto com diversas estruturas de dados implementadas em Lua. A ideia do projeto consiste em expandir o repertorio da biblioteca atraves de contribuicoes externas.
Qualquer um pode contribuir, basta abrir uma issue, realizar um fork e fazer um pull request. Ler CONTRUBUTING.md para todos os detalhes desse processo.
A utilização das estruturas é bem simples. Basta baixar o arquivo ".lua" da estrutura desejada e juntar ao projeto. Após isso, importar e instanciar a classe da estrutura utilizando esse arquivo:
local classe_estrutura = require("estrutura_desejado.lua");
local objeto = classe_estrutura:new()
require("Open");
require("Open");
require("Open");
Estrutura basica de fila. Estrutura que segue a logica FIFO(first in, first out).
- Fila:new(args)
- Descricao: Metodo construtor que instancia o objeto Fila.
- Argumentos: (Table) Atributos desejados para a Fila.
- Retorno: (Object) Fila instanciada.
- Fila:push(args)
- Descricao: Metodo push que insere um objeto na Fila.
- Argumentos: (Object) Objeto desejados para incluir na Fila.
- Fila:pop()
- Descricao: Metodo pop que remove um objeto da Fila.
- Retorno: (Object) Objeto removida da Fila.
- Fila:free()
- Descricao: Metodo para liberar a Fila.
...
local Fila = require("fila");
local nova_fila = Fila:new();
nova_fila:push("Primeiro_Elemento");
nova_fila:push("Segundo_Elemento");
local elemento_extraido = nova_fila:pop();
print(elemento_extraido);
nova_fila:free();
nova_fila = nil;
require("Open");
require("Open");
Estrutura basica de Lista. Seguem métodos tradicionais.
- Lua:new(atributos)
- Descricao: Metodo cosntrutor que instancia o objeto Lista..
- Argumentos: (Table) Atributos desejados para a Lista.
- Retorno: (Object) Lista instanciada.
- Lista:append(objeto)
- Descricao: Metodo append que insere um objeto no fim da Lista.
- Argumentos: (Object) Objeto desejados para incluir na Lista.
- Lista:insert(objeto, i)
- Descricao: Metodo append que insere um objeto em uma posição específica da Lista.
- Argumentos: (Object) Objeto desejados para incluir na Lista.
- (Int) Índice da posição para inserir na lista.
- Lista:pop(i)
- Descricao: Metodo pop que remove um objeto específico da Lista.
- Argumentos: (Int) Índice da posição para remover da lista.
- Retorno: (Object) Objeto removida da Lista.
- Lista:print()
- Descricao: Funcao que printa toda a lista
- Lista:count()
- Descricao: Funcao que retorna a quantidade de elementos na lista.
- Retorno: (Int) Quantidade de elementos da lista.
- Lista:extend(lista_base)
- Descricao: Funcao que extende uma lista em outra. Concatena no fim. Ou seja, adiciona a lista_base no fim da lista.
- Argumentos: (Lista) Lista a ser adicionada.
- Lista:clear()
- Descricao: Funcao que remove todos os elementos de uma Lista.
- Lista:index(elemento)
- Descricao: Funcao que retorna o índice do primeiro elemento com o valor especificado.
- Argumentos: (Object) elemento a ser identificado na lista.
- Retorno: (Int) Índice correspondente. Quando não há um elemento, retorna -1;
- Lista:remove(elemento)
- Descricao: Funcao que remove o primeiro elemento com o valor especificado.
- Retorno: (Object) elemento a ser identificado na lista.
- Lista:copy()
- Descricao: Funcao que retorna a cópia de uma lista.
- Argumentos: (Object) elemento a ser identificado na lista.
- Lista:reverse()
- Descricao: Funcao que reverte a ordem dos elementos de uma lista.
- Lista:sort()
- Descricao: Funcao que ordena uma Lista.
- Lista:free()
- Descricao: Metodo para liberar a Lista.
local Lista = require("lista");
local aux = Lista:new();
aux:append("test");
aux:append(17);
aux:append(true);
aux:append("fim");
--Para printar a lista:
aux:print();
aux:free();
aux = nil;
require("Open");
require("Open");
Estrutura básica de Pilha. Estrutura de dados que segue a logica LIFO(last in, first out).
- Pilha:new(args)
- Descricao: Metodo construtor que instancia o objeto Pilha.
- Argumentos: (Table) Atributos desejados para a Pilha.
- Retorno: (Object) Pilha instanciada.
- Pilha:push(args)
- Descricao: Metodo push que insere um objeto na Pilha.
- Argumentos: (Object) Objeto desejados para incluir na Pilha.
- Pilha:pop()
- Descricao: Metodo pop que remove um objeto da Pilha.
- Retorno: (Object) Objeto removido da Pilha.
- Pilha:free()
- Descricao: Metodo para liberar a Pilha.
local Pilha = require("pilha");
local nova_pilha = Pilha:new();
nova_pilha:push("Primeiro_Elemento");
nova_pilha:push("Segundo_Elemento");
local elemento_extraido = nova_pilha:pop();
print(elemento_extraido);
nova_pilha:free();
nova_pilha = nil;
Estrutura basica de Vetor. Segue metodos tradicionais.
- Vetor:new(args)
- Descricao: Metodo construtor que instancia o objeto Vetor.
- Argumentos: (Table) Atributos desejados para o Vetor.
- Retorno: (Object) Vetor instanciado.
- Vetor:insert(objeto)
- Descricao: Metodo insert que insere um objeto no Vetor.
- Argumentos: (Object) Objeto desejados para incluir no Vetor.
- Vetor:at(index)
- Descricao: Metodo at que acessa um objeto do Vetor.
- Argumentos: (Int) Indice qual se deseja acessar
- Retorno: (Object) Objeto acessado do Vetor.
- Vetor:tam()
- Descricao: Metodo que retorna o tamanho do Vetor.
- Retorno: (Int)Tamanho do Vetor.
- Vetor:front()
- Descricao: Metodo front que acessa o primeiro objeto do Vetor.
- Retorno: (Object) Objeto da primeira posicao do Vetor.
- Vetor:back()
- Descricao: Metodo back que acessao ultimo objeto do Vetor.
- Retorno: (Object) Objeto da ultima posicao do Vetor.
- Vetor:begin()
- Descricao: Metodo begin que seta o iterador para o primeira posicao do Vetor.
- Vetor:finale()
- Descricao: Metodo finale que seta o iterador para a ultima posicao do Vetor.
- Vetor:setIt(index)
- Metodo setIt que seta o iterador para uma posicao arbitraria do Vetor.
- Argumentos: (Int) Indice qual se deseja setar o iterador.
- Vetor:after()
- Descricao: Metodo after que busca o proximo elemento do vetor baseando-se no iterador.
- Retorno: (Object) Objeto da posicao iterada.
- Vetor:before()
- Descricao: Metodo before que busca o elemento anterior do vetor baseando-se no iterador.
- Retorno: (Object) Objeto da posicao iterada.
- Vetor:swap(vetor_base)
- Descricao: Metodo swap que troca todo conteudo do Vetor pelo conteudo de outro Vetor.
- Argumentos: (Vetor) Vetor base para o swap
- Retorno: (Int) Numero de posicoes copiadas
- Vetor:free()
- Descricao: Metodo para liberar o Vetor.
...
local Vetor = require("vetor");
local aux = Vetor:new();
aux:insert("test");
aux:insert(17);
aux:insert(true);
aux:insert("fim");
print("Item na posicao 1 do vetor: " .. aux:at(1)); --> Item na posicao 1 do vetor: test
print("Inicio do vetor: " .. aux:front()); --> Inicio do vetor: test
print("Final do vetor: " .. aux:back()) --> Final do vetor: fim
--Para printar a lista:
aux:begin()
for i=1, aux:tam() do
print(aux:after()) -->test 17 true fim
end
aux:swap({1, "trocado", 124, false});
--Para printar a lista:
aux:finale()
for i=1, aux:tam() do
print(aux:before()) -->false 124 trocado 1
end
aux:free();
aux = nil;
...
Este projeto está em desenvolvimento...