/
sejeenn
/
python_basic
Обзор
Документация
Войти
/
sejeenn
/
python_basic
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Module26/06_linked_list/main.py
91 строка
3 KB
Eugene Vorontsov
Copy repo python basic
03 фев 2025, 20:23
03 фев 2025, 20:23
a8fce4a
Код
Авторство
О чём код?
from typing import Any, Optional class Node: """ Класс Node (Узел) value: может иметь любое значение next: ссылку на следующий узел """ def __init__(self, value: Optional[Any] = None, nxt: Optional['Node'] = None) -> None: self.value = value self.next = nxt def __str__(self): return 'Node [{value}]'.format(value=str(self.value)) class LinkedList: """ Класс LinkedList (Связный список) head: Начальный узел списка length: (int) Длина списка """ def __init__(self) -> None: self.head: Optional[Node] = None self.length = 0 def __str__(self) -> str: if self.head is not None: current = self.head values = [str(current.value)] while current.next is not None: current = current.next values.append(str(current.value)) return '[{values}]'.format(values=' '.join(values)) return 'LinkedList []' def append(self, elem: Any) -> None: """Добавление нового элемента в связный список""" new_node = Node(elem) if self.head is None: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node self.length += 1 def remove(self, index) -> None: """Удаление элемента из списка по его индексу""" current_node = self.head current_index = 0 if self.length == 0 or self.length <= index: raise IndexError if current_node is not None: if index == 0: self.head = current_node.next self.length -= 1 return while current_node is not None: if current_index == index: break prev = current_node current_node = current_node.next current_index += 1 prev.next = current_node.next self.length -= 1 def get_value(self, index): """Получение значения узла по его индексу""" current_node = self.head if not 0 <= index <= self.length: raise IndexError else: for _ in range(index): current_node = current_node.next return current_node.value my_list = LinkedList() my_list.append(10) my_list.append(20) my_list.append(30) print('Текущий список', my_list) print('Получение третьего элемента:', my_list.get_value(2)) print('Удаление второго элемента.') my_list.remove(1) print('Новый список:', my_list)