diff --git a/novikovsd/hashtab.py b/novikovsd/hashtab.py index e69de29..ef0f54f 100644 --- a/novikovsd/hashtab.py +++ b/novikovsd/hashtab.py @@ -0,0 +1,52 @@ +import time +import random +import csv +import os +import sys + + +def ll_insert(head, name, phone): + curr = head + while curr is not None: + if curr['name'] == name: + curr['phone'] = phone + return head + curr = curr['next'] + # Вставка в начало (проще и быстрее) + new_node = {'name': name, 'phone': phone, 'next': head} + return new_node + + +def ll_find(head, name): + curr = head + while curr is not None: + if curr['name'] == name: + return curr['phone'] + curr = curr['next'] + return None + + +def ll_delete(head, name): + if head is None: + return None + if head['name'] == name: + return head['next'] + prev = head + curr = head['next'] + while curr is not None: + if curr['name'] == name: + prev['next'] = curr['next'] + return head + prev = curr + curr = curr['next'] + return head + + +def ll_list_all(head): + entries = [] + curr = head + while curr is not None: + entries.append((curr['name'], curr['phone'])) + curr = curr['next'] + entries.sort(key=lambda x: x[0]) + return entries \ No newline at end of file