diff --git a/estrutura_de_dados/arvores/avl.py b/estrutura_de_dados/arvores/avl.py new file mode 100644 index 0000000..e69de29 diff --git a/estrutura_de_dados/arvores/binary.py b/estrutura_de_dados/arvores/binary.py new file mode 100644 index 0000000..21f8ff3 --- /dev/null +++ b/estrutura_de_dados/arvores/binary.py @@ -0,0 +1,17 @@ + +class Node(): + + def __init__(self, val): + self.val = val + self.right = None + self.left = None + +class BinaryTree(): + + def __init__(self, root): + self.root = root + + def insert(self, val): + + node = self.root + \ No newline at end of file diff --git a/estrutura_de_dados/hash_set.py b/estrutura_de_dados/hash_set.py new file mode 100644 index 0000000..99b06fd --- /dev/null +++ b/estrutura_de_dados/hash_set.py @@ -0,0 +1,35 @@ + +class HashSet(): + + def __init__(self, type): + self.type = type + self.hash = [] + + def insert(self, data): + + if type(data) == self.type and not self.__contains(data): + self.hash.append(data) + + def remove(self, data): + self.hash.remove(data) + + def __contains(self, data): + return data in self.hash + + def __str__(self): + string = '' + + for element in self.hash: + string += f'{element} ' + return string + +if __name__ == '__main__': + + hashset = HashSet(str) + hashset.insert('Vinicius') + hashset.insert(1) + hashset.insert(4) + hashset.insert('Teste') + print(hashset.__str__()) + hashset.remove('Vinicius') + print(hashset.__str__()) \ No newline at end of file diff --git a/estrutura_de_dados/linked_list.py b/estrutura_de_dados/linked_list.py new file mode 100644 index 0000000..bebe991 --- /dev/null +++ b/estrutura_de_dados/linked_list.py @@ -0,0 +1,51 @@ +class Cell(): + + def __init__(self, data): + self.data = data + self.next = None + +class LinkedList(): + + def __init__(self, root): + self.root = root + + def insert(self, data): + + cell = self.root + + while cell.next: + cell = cell.next + cell.next = Cell(data) + + def remove(self, data): + + if self.root.data == data: + self.root = self.root.next + else: + + cell = self.root + + while cell.next and cell.next.data != data: + cell = cell.next + + if not cell.next: cell.next = cell.next.next + + def __str__(self): + + string = '' + + r = self.root + + while r != None: + string += f'{r.data} ' + r = r.next + + return string + +if __name__ == '__main__': + linked = LinkedList(Cell('Vinicius')) + linked.insert('Teste') + linked.insert('Felix') + linked.remove('Felix') + linked.remove('Felix') + print(linked.__str__()) \ No newline at end of file diff --git a/estrutura_de_dados/queque.py b/estrutura_de_dados/queque.py new file mode 100644 index 0000000..9113e73 --- /dev/null +++ b/estrutura_de_dados/queque.py @@ -0,0 +1,37 @@ + +class Queque(): + + def __init__(self): + self.data = [] + self.total_elements = 0 + + def enqueque(self, element): + self.data = [element] + self.data + self.total_elements += 1 + + def dequeque(self): + + if self.total_elements > 0: + self.data[self.total_elements-1] + self.total_elements -= 1 + + def __str__(self): + string = '' + + + for i in range(0, self.total_elements): + string += f'{self.data[i]} ' + return string + +if __name__ == '__main__': + queque = Queque() + queque.enqueque(1) + queque.enqueque(2) + queque.enqueque(3) + queque.enqueque(4) + queque.enqueque(5) + queque.dequeque() + queque.dequeque() + queque.dequeque() + queque.enqueque(44) + print(queque.__str__()) \ No newline at end of file diff --git a/estrutura_de_dados/stack.py b/estrutura_de_dados/stack.py new file mode 100644 index 0000000..b7e8364 --- /dev/null +++ b/estrutura_de_dados/stack.py @@ -0,0 +1,38 @@ + +class Stack(): + + def __init__(self): + self.data = [] + + def pop(self): + + if len(self.data) == 0: + raise IndexError('Stack out of range') + else: + last_element = self.data[0] + self.data.remove(last_element) + return last_element + + def push(self, data): + + self.data = self.data + [data] + + + def __str__(self): + string = '' + for element in self.data: + string += f'{element} ' + return string + +if __name__ == '__main__': + stack = Stack() + stack.push(1) + stack.push(2) + stack.push(3) + stack.push(4) + stack.push(5) + stack.pop() + stack.pop() + stack.pop() + stack.push(44) + print(stack.__str__()) \ No newline at end of file