2026-04-10 04:26:53 +00:00
|
|
|
import random as rnd
|
|
|
|
|
#############################################################################################
|
|
|
|
|
|
|
|
|
|
def ll_insert(head, name, phone):
|
|
|
|
|
next_node = {'name': name, 'phone': phone, 'next': None}
|
|
|
|
|
if head is None: return next_node
|
|
|
|
|
|
|
|
|
|
running = head
|
|
|
|
|
while running is not None:
|
|
|
|
|
if running['name'] == name:
|
|
|
|
|
running['phone'] = phone
|
|
|
|
|
return head
|
|
|
|
|
running = running['next']
|
|
|
|
|
|
|
|
|
|
running = head
|
|
|
|
|
while running['next'] is not None: running = running['next']
|
|
|
|
|
running['next'] = next_node
|
|
|
|
|
return head
|
|
|
|
|
|
2026-04-22 14:04:25 +00:00
|
|
|
def ll_find(head, name):
|
|
|
|
|
running = head
|
|
|
|
|
|
2026-04-22 16:50:01 +00:00
|
|
|
while True:
|
2026-04-22 14:04:25 +00:00
|
|
|
if running['name'] == name:
|
|
|
|
|
return running['phone']
|
|
|
|
|
running = running['next']
|
2026-04-22 16:50:01 +00:00
|
|
|
if running is None: break
|
2026-04-22 14:04:25 +00:00
|
|
|
|
|
|
|
|
return None
|
|
|
|
|
|
|
|
|
|
|
2026-04-22 16:50:01 +00:00
|
|
|
def ll_delete(head, name):
|
|
|
|
|
running = head
|
|
|
|
|
|
|
|
|
|
if running['name'] == name:
|
|
|
|
|
return head['next']
|
|
|
|
|
|
|
|
|
|
while running['next']['name'] != name:
|
|
|
|
|
running = running['next']
|
|
|
|
|
if running['next']['next'] is None:
|
|
|
|
|
if running['next']['name'] != name:
|
|
|
|
|
return head
|
|
|
|
|
if running['next']['next'] is None:
|
|
|
|
|
running['next'] = None
|
|
|
|
|
else: running['next'] = running['next']['next']
|
|
|
|
|
|
|
|
|
|
return head
|
|
|
|
|
|
|
|
|
|
|
2026-05-01 08:09:09 +00:00
|
|
|
def ll_list_all(head):
|
|
|
|
|
name_list = []
|
|
|
|
|
running = head
|
|
|
|
|
while running is not None:
|
|
|
|
|
name_list.append([running['name'], running['phone']])
|
|
|
|
|
running = running['next']
|
|
|
|
|
return name_list
|
2026-04-22 16:50:01 +00:00
|
|
|
|
2026-05-01 08:09:09 +00:00
|
|
|
def sort_list(name_list):
|
|
|
|
|
l = len(name_list)
|
|
|
|
|
for i in range(l - 1):
|
|
|
|
|
for j in range(l - i - 1):
|
|
|
|
|
if name_list[j][0] > name_list[j + 1][0]:
|
|
|
|
|
name_list[j][0], name_list[j + 1][0] = name_list[j + 1][0], name_list[j][0]
|
|
|
|
|
return name_list
|
|
|
|
|
|
2026-04-22 14:04:25 +00:00
|
|
|
|
|
|
|
|
def main():
|
|
|
|
|
|
|
|
|
|
head = None
|
|
|
|
|
|
|
|
|
|
print('======== TESTING LL_INSERT ==========')
|
|
|
|
|
Name = ['Dima', 'Ivan', 'Maxim', 'Alex']
|
|
|
|
|
|
|
|
|
|
for _ in range(10):
|
|
|
|
|
name = Name[rnd.randint(0, 3)]
|
|
|
|
|
phone = str(rnd.randint(0,9)) + str(rnd.randint(0,9)) + str(rnd.randint(0,9)) + '-' + \
|
|
|
|
|
str(rnd.randint(0,9)) + str(rnd.randint(0,9)) + str(rnd.randint(0,9))
|
|
|
|
|
print(name, phone)
|
|
|
|
|
head = ll_insert(head, name, phone)
|
|
|
|
|
print(head)
|
|
|
|
|
print('-----------------------------------\n')
|
|
|
|
|
print('======== END TESTING ================')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
print('======== TESTING LL_FIND ==========')
|
|
|
|
|
Name.append('Masha')
|
|
|
|
|
for i in range(len(Name)):
|
|
|
|
|
name = Name[i]
|
|
|
|
|
print(name, ":", ll_find(head, name))
|
|
|
|
|
print("======== END TESTING =============")
|
|
|
|
|
|
2026-05-01 08:09:09 +00:00
|
|
|
print("============ TESTING LL_LIST_ALL AND SORT_LIST =============")
|
|
|
|
|
print(*sort_list(ll_list_all(head)))
|
|
|
|
|
print("============ END TESTING ===============")
|
|
|
|
|
|
2026-04-22 16:50:01 +00:00
|
|
|
print('========== TESTING LL_DELETE ==========')
|
|
|
|
|
|
|
|
|
|
for _ in range(2):
|
|
|
|
|
name = Name[rnd.randint(0, 4)]
|
|
|
|
|
head = ll_delete(head, name)
|
|
|
|
|
|
|
|
|
|
print(head)
|
|
|
|
|
print(name, ":", ll_find(head, name))
|
|
|
|
|
print("========= END TESTING ==============")
|
2026-04-22 14:04:25 +00:00
|
|
|
|
2026-05-01 08:09:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-04-22 14:04:25 +00:00
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|
|
|
|
|
|
|
|
|
|
|
2026-04-10 04:26:53 +00:00
|
|
|
|
|
|
|
|
|