diff --git a/lomakinae/.gitignore b/lomakinae/.gitignore new file mode 100644 index 0000000..7a60b85 --- /dev/null +++ b/lomakinae/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc diff --git a/lomakinae/docs/01_report.md b/lomakinae/docs/01_report.md new file mode 100644 index 0000000..e69de29 diff --git a/lomakinae/docs/data/01/src/ll.py b/lomakinae/docs/data/01/src/ll.py new file mode 100644 index 0000000..41d2eba --- /dev/null +++ b/lomakinae/docs/data/01/src/ll.py @@ -0,0 +1,50 @@ +def _ll_new_node(name, phone): + return {'name': name, 'phone': phone, 'next': None} + + +def ll_insert(head, name, phone): + node = head + while node is not None: + if node['name'] == name: + node['phone'] = phone + return head + node = node['next'] + + new_node = _ll_new_node(name, phone) + new_node['next'] = head + return new_node + + +def ll_find(head, name): + node = head + while node is not None: + if node['name'] == name: + return node['phone'] + node = node['next'] + return None + + +def ll_delete(head, name): + if head is None: + return None + + if head['name'] == name: + return head['next'] + + node = head + while node['next'] is not None: + if node['next']['name'] == name: + node['next'] = node['next']['next'] + return head + node = node['next'] + + return head + + +def ll_list_all(head): + records = [] + node = head + while node is not None: + records.append((node['name'], node['phone'])) + node = node['next'] + return sorted(records)