Skip to content

XDyao/LuaDataStructures

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

108 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Lua 100.0%