From 8124c755f8f6d4e65aa4be95e60e0aec9f7bc738 Mon Sep 17 00:00:00 2001 From: oSTEVEo Date: Fri, 20 Mar 2026 20:06:29 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=88=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MusinAA/task-1/BinaryTree.py | 20 ++++++++++++++++++++ MusinAA/task-1/HashTable.py | 18 ++++++++++++++++++ MusinAA/task-1/LinkedList.py | 25 +++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 MusinAA/task-1/BinaryTree.py create mode 100644 MusinAA/task-1/HashTable.py create mode 100644 MusinAA/task-1/LinkedList.py diff --git a/MusinAA/task-1/BinaryTree.py b/MusinAA/task-1/BinaryTree.py new file mode 100644 index 0000000..aa39c0e --- /dev/null +++ b/MusinAA/task-1/BinaryTree.py @@ -0,0 +1,20 @@ +""" +Двоичное дерево поиска + +Узел — словарь: +{'name': 'Имя', 'phone': '123', 'left': None, 'right': None}. +""" + +def bst_insert(root, name, phone): + """Рекурсивно или итеративно вставляет, + возвращает новый корень (если корень меняется).""" + +def bst_find(root, name): + ... + +def bst_delete(root, name): + """Удаление, возвращает новый корень.""" + +def bst_list_all(root): + """Центрированный обход. + Рекурсивно собирает записи в отсортированном порядке.""" \ No newline at end of file diff --git a/MusinAA/task-1/HashTable.py b/MusinAA/task-1/HashTable.py new file mode 100644 index 0000000..8fb6288 --- /dev/null +++ b/MusinAA/task-1/HashTable.py @@ -0,0 +1,18 @@ +""" +Хеш-таблица + +Хранится как список buckets фиксированной длины, +каждый элемент — голова связного списка (или None). +""" + +def ht_insert(buckets, name, phone): + """вычисляет индекс, вызывает ll_insert для соответствующего бакета.""" + +def ht_find(buckets, name): + ... + +def ht_delete(buckets, name): + ... + +def ht_list_all(buckets): + """Собирает все записи из всех бакетов и сортирует""" \ No newline at end of file diff --git a/MusinAA/task-1/LinkedList.py b/MusinAA/task-1/LinkedList.py new file mode 100644 index 0000000..c9dd29f --- /dev/null +++ b/MusinAA/task-1/LinkedList.py @@ -0,0 +1,25 @@ +""" +Связный список (LinkedListPhoneBook) + +Узел представляется словарём: +{'name': 'Имя', 'phone': '123', 'next': None}. +""" + + + +def ll_insert(head, name, phone): + """ + Проходит до конца (или сразу добавляет в конец) и возвращает новую + голову (если вставка в начало) или изменяет список по ссылке. + Удобнее возвращать новую голову, если вставка может быть в начало. + """ + +def ll_find(head, name): + """Ищет узел, возвращает телефон или None.""" + +def ll_delete(head, name): + """Удаляет узел, возвращает новую голову.""" + +def ll_list_all(head): + """Cобирает все записи в список и сортирует. + сортировка вынесена отдельно).""" \ No newline at end of file