From b26bb1d3e7c71b4e306bc13c54d71bc026b3622e Mon Sep 17 00:00:00 2001 From: danch0us Date: Wed, 20 May 2026 20:09:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kornevma/main.py | 146 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 kornevma/main.py diff --git a/kornevma/main.py b/kornevma/main.py new file mode 100644 index 0000000..f28ebc7 --- /dev/null +++ b/kornevma/main.py @@ -0,0 +1,146 @@ +import random +import time +import sys + +def mr(name, phone): + return {"name": name, "phone": phone} + +#llист +def ll_create_node(record): + return [record, None] + +def ll_insert(ll_head, record): + new_node = ll_create_node(record) + new_node[1] = ll_head[0] + ll_head[0] = new_node + +def ll_find(ll_head, name): + cur = ll_head[0] + while cur: + if cur[0]["name"] == name: + return cur[0] + cur = cur[1] + return None + +def ll_delete(ll_head, name): + cur = ll_head[0] + prev = None + while cur: + if cur[0]["name"] == name: + if prev: + prev[1] = cur[1] + else: + ll_head[0] = cur[1] + return True + prev = cur + cur = cur[1] + return False + +def ll_list_all(ll_head): + res = [] + cur = ll_head[0] + while cur: + res.append(cur[0]) + cur = cur[1] + return res + +#ht +def ht_hash(name, size): + return hash(name) % size +def ht_insert(table, record): + idx = ht_hash(record["name"], len(table)) + new_node = ll_create_node(record) + new_node[1] = table[idx] + table[idx] = new_node + +def ht_find(table, name): + idx = ht_hash(name, len(table)) + cur = table[idx] + while cur: + if cur[0]["name"] == name: + return cur[0] + cur = cur[1] + return None + +def ht_delete(table, name): + idx = ht_hash(name, len(table)) + cur = table[idx] + prev = None + while cur: + if cur[0]["name"] == name: + if prev: + prev[1] = cur[1] + else: + table[idx] = cur[1] + return True + prev = cur + cur = cur[1] + return False + +def ht_list_all(table): + res = [] + for head in table: + cur = head + while cur: + res.append(cur[0]) + cur = cur[1] + return res + + +# bst +def bst_create_node(record): + return [record, None, None] + +def bst_insert(root, record): + if root is None: + return bst_create_node(record) + if record["name"] < root[0]["name"]: + root[1] = bst_insert(root[1], record) + elif record["name"] > root[0]["name"]: + root[2] = bst_insert(root[2], record) + else: #мб + root[0] = record + return root + +def bst_find(root, name): + if root is None: + return None + if name == root[0]["name"]: + return root[0] + elif name < root[0]["name"]: + return bst_find(root[1], name) + else: + return bst_find(root[2], name) + +def bst_find_min(node): + while node[1] is not None: + node = node[1] + return node + +def bst_delete(root, name): + if root is None: + return None + if name < root[0]["name"]: + root[1] = bst_delete(root[1], name) + elif name > root[0]["name"]: + root[2] = bst_delete(root[2], name) + else: + + if root[1] is None: + return root[2] + elif root[2] is None: + return root[1] + else: + succ = bst_find_min(root[2]) + root[0] = succ[0] + root[2] = bst_delete(root[2], succ[0]["name"]) + return root + +def bst_list_all(root): + def inorder(node): + if node is None: + return [] + return inorder(node[1]) + [node[0]] + inorder(node[2]) + return inorder(root) +if __name__ == "__main__": + print('cba') \ No newline at end of file