From d81469a8b742a7c0f1723826c093ff477acf964c Mon Sep 17 00:00:00 2001 From: vavil Date: Mon, 11 Dec 2023 20:10:56 +0300 Subject: [PATCH] Done homework1 --- poetry.lock | 7 +++++++ src/linked_list.py | 25 ++++++++++++++++++++++--- src/stack.py | 21 ++++++++++++++++----- 3 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 poetry.lock diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 00000000..86a4a804 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. +package = [] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "81b2fa642d7f2d1219cf80112ace12d689d053d81be7f7addb98144d56fc0fb2" diff --git a/src/linked_list.py b/src/linked_list.py index c9094401..63160587 100644 --- a/src/linked_list.py +++ b/src/linked_list.py @@ -1,18 +1,37 @@ +from typing import Any + + class Node: """Класс для узла односвязного списка""" - pass + def __init__(self, data: Any): + self.data = data + self.next = None class LinkedList: """Класс для односвязного списка""" + head = None + top = None def insert_beginning(self, data: dict) -> None: """Принимает данные (словарь) и добавляет узел с этими данными в начало связанного списка""" - pass + if self.head is None: + self.head = Node(data) + + else: + node = Node(data) + node.next = self.head + self.head = node def insert_at_end(self, data: dict) -> None: """Принимает данные (словарь) и добавляет узел с этими данными в конец связанного списка""" - pass + if self.top is None: + self.top = Node(data) + + else: + node = Node(data) + self.top.next = node + self.top = node def __str__(self) -> str: """Вывод данных односвязного списка в строковом представлении""" diff --git a/src/stack.py b/src/stack.py index 637d1b8f..bba11865 100644 --- a/src/stack.py +++ b/src/stack.py @@ -1,13 +1,15 @@ class Node: """Класс для узла стека""" - def __init__(self, data, next_node): + def __init__(self, data, next_node=None): """ Конструктор класса Node :param data: данные, которые будут храниться в узле """ - pass + + self.data = data + self.next_node = next_node class Stack: @@ -15,7 +17,7 @@ class Stack: def __init__(self): """Конструктор класса Stack""" - pass + self.top = None def push(self, data): """ @@ -23,7 +25,13 @@ def push(self, data): :param data: данные, которые будут добавлены на вершину стека """ - pass + if self.top is None: + self.top = Node(data) + + else: + node = Node(data) + node.next_node = self.top + self.top = node def pop(self): """ @@ -31,4 +39,7 @@ def pop(self): :return: данные удаленного элемента """ - pass + data = self.top.data + self.top = self.top.next_node + + return data