2026-rff_mp/kuznetsovTD/task1/structures/LinkedList.py

51 lines
1.2 KiB
Python
Raw Normal View History

2026-04-30 20:54:08 +00:00
def ll_list_all(start: dict | None) -> list:
items = []
node = start
while node is not None:
items.append((node['name'], node['phone']))
node = node['next']
items.sort(key=lambda x: x[0])
return items
def ll_delete(start: dict | None, key: str) -> dict | None:
if start is None:
return None
if start['name'] == key:
return start['next']
ptr = start
while ptr['next'] is not None:
if ptr['next']['name'] == key:
ptr['next'] = ptr['next']['next']
return start
ptr = ptr['next']
return start
def ll_find(start: dict | None, key: str) -> str | None:
ptr = start
while ptr is not None:
if ptr['name'] == key:
return ptr['phone']
ptr = ptr['next']
return None
def ll_insert(start: dict | None, key: str, value: str) -> dict:
if start is None:
return {'name': key, 'phone': value, 'next': None}
ptr = start
while True:
if ptr['name'] == key:
ptr['phone'] = value
return start
if ptr['next'] is None:
ptr['next'] = {'name': key, 'phone': value, 'next': None}
return start
ptr = ptr['next']