2026-02-28 16:01:53 +00:00
|
|
|
|
import random, time
|
2026-02-28 15:13:05 +00:00
|
|
|
|
N = []
|
|
|
|
|
|
|
2026-02-28 16:01:53 +00:00
|
|
|
|
for n in range(10000): # вот сначала просят сгенерировать а потом 100 гарантированных имён ну ёмаё💀💀💀
|
2026-02-28 15:13:05 +00:00
|
|
|
|
i = random.randint(1,99999)
|
|
|
|
|
|
p = random.randint(10000000, 99999999)
|
2026-02-28 16:01:53 +00:00
|
|
|
|
N.append((f"User_{i:05d}", str(p))) # как в примере кортежики брбрбр
|
2026-02-28 15:13:05 +00:00
|
|
|
|
|
|
|
|
|
|
def ll_insert(head, name, phone):
|
|
|
|
|
|
data = {'name' : name, 'phone' : phone, "next" : None}
|
|
|
|
|
|
|
2026-02-28 16:01:53 +00:00
|
|
|
|
if head is None: # я люблю делать бесполезные проверки
|
2026-02-28 15:13:05 +00:00
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
current = head
|
|
|
|
|
|
while current:
|
|
|
|
|
|
if current['name'] == name:
|
|
|
|
|
|
current['phone'] = phone
|
|
|
|
|
|
return head
|
|
|
|
|
|
if current['next'] == None:
|
|
|
|
|
|
last = current
|
2026-02-28 16:01:53 +00:00
|
|
|
|
current = current['next'] # везде где такое это изменение текущей строки на следующую через ссылку в нексте
|
2026-02-28 15:13:05 +00:00
|
|
|
|
|
|
|
|
|
|
last['next'] = data
|
|
|
|
|
|
return head
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ll_find(head, name):
|
|
|
|
|
|
current = head
|
|
|
|
|
|
while current:
|
|
|
|
|
|
if current['name'] == name:
|
|
|
|
|
|
return current['phone']
|
|
|
|
|
|
current = current['next']
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
def ll_delete(head, name):
|
|
|
|
|
|
if head is None:
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
|
prev = head
|
|
|
|
|
|
current = head['next']
|
|
|
|
|
|
while current:
|
|
|
|
|
|
if current['name'] == name:
|
|
|
|
|
|
prev['next'] = current['next']
|
|
|
|
|
|
return head
|
|
|
|
|
|
prev = current
|
|
|
|
|
|
current = current['next']
|
|
|
|
|
|
return head
|
|
|
|
|
|
|
|
|
|
|
|
def ll_list_all(head):
|
2026-02-28 16:01:53 +00:00
|
|
|
|
data_list = []
|
2026-02-28 15:13:05 +00:00
|
|
|
|
|
2026-02-28 16:01:53 +00:00
|
|
|
|
current = head
|
|
|
|
|
|
while current:
|
|
|
|
|
|
data_list.append({'name' : current['name'], 'phone' : current['phone']})
|
|
|
|
|
|
current = current['next']
|
|
|
|
|
|
|
|
|
|
|
|
data_list.sort(key=lambda x: x['name']) # честно украдено со стака оверфлоу и не понял что такое лямбда я устал читать
|
|
|
|
|
|
return data_list
|
|
|
|
|
|
|
|
|
|
|
|
#1 - вставка списка
|
|
|
|
|
|
start_time = time.perf_counter()
|
|
|
|
|
|
data_unsorted = None
|
2026-02-28 15:13:05 +00:00
|
|
|
|
for name, phone in N:
|
2026-02-28 16:01:53 +00:00
|
|
|
|
data_unsorted = ll_insert(data_unsorted, name, phone)
|
|
|
|
|
|
end_time = time.perf_counter()
|
|
|
|
|
|
elapsed_time = end_time - start_time
|
|
|
|
|
|
|
|
|
|
|
|
data_sorted = ll_list_all(data_unsorted)
|
2026-02-28 15:13:05 +00:00
|
|
|
|
|