FulecoRafa / LuaSTDL

Biblioteca para Linguagem Lua que implementa estruturas de dados mais utilizadas e algoritmos principais.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lua Standard Library

Biblioteca para Linguagem Lua que implementa estruturas de dados mais utilizadas e algoritmos principais.

lua_logo Lua: https://www.lua.org/

Library to Lua Programming Language that aims to provide most used data structures and algorithms.


Motivacao

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.


Contribuicao

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.


Utilizacao

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()

Documentacao - Estrutura de Dados

Arvore binaria

Informacoes

...

Metodos

...

Exemplo
require("Open");

AVL

Informacoes

...

Metodos

...

Exemplo
require("Open");

Fila de Prioridade (Heap)

Informacoes

...

Metodos

...

Exemplo
require("Open");

Fila

Informacoes

Estrutura basica de fila. Estrutura que segue a logica FIFO(first in, first out).

Metodos
  • 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.

...

Exemplo

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;

Grafo

Informacoes

...

Metodos

...

Exemplo
require("Open");

Hash

Informacoes

...

Metodos

...

Exemplo
require("Open");

Lista

Informacoes

Estrutura basica de Lista. Seguem métodos tradicionais.

Métodos

  • 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.

Exemplo
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;

Mapa

Informacoes

...

Metodos

...

Exemplo
require("Open");

Matriz

Informacoes

...

Metodos

...

Exemplo
require("Open");

Pilha

Informacoes

Estrutura básica de Pilha. Estrutura de dados que segue a logica LIFO(last in, first out).

Metodos
  • 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.
Exemplo
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;

Vetor

Informacoes

Estrutura basica de Vetor. Segue metodos tradicionais.

Metodos
  • 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.

...

Exemplo
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;


Documentacao - Algoritmos

Quick

...

Este projeto está em desenvolvimento...

About

Biblioteca para Linguagem Lua que implementa estruturas de dados mais utilizadas e algoritmos principais.

License:MIT License


Languages

Language:Lua 100.0%