Перейти к основному содержанию
EDU-MMCS
  • В начало
  • Дополнительно
Вы используете гостевой доступ
Вход
В начало
  1. Prog_2_4
  2. Лабораторная работа 12. Структуры данных

Лабораторная работа 12. Структуры данных

Требуемые условия завершения
Открыто с: четверг, 24 апреля 2025, 00:00
Срок сдачи: четверг, 1 мая 2025, 00:00

1. Односвязный список с итератором
Класс SinglyLinkedList и вложенный Node(value, next). Реализуйте:

  • append(value)

  • remove(value)

  • __iter__() и __next__() у списка, чтобы можно было делать for x in my_list:.

Односвязный список (singly linked list) — это базовая структура данных, представляющая собой цепочку элементов (узлов), где каждый узел содержит:

  1. Значение (value)

  2. Ссылку (pointer) на следующий узел в списке (или None, если узел последний).

    class SinglyLinkedList:

        class Node:

            def __init__(self, value):

                self.value = value

                self.next = None


        def __init__(self):

            self.head = None


        def append(self, value):

            """Добавить в конец списка."""

            # TODO: пройти до tail, присоединить новую Node


        def remove(self, value):

            """Удалить первый узел со значением value."""

            # TODO: следить за prev/current, пропустить нужный узел


        def __iter__(self):

            self._iter_node = self.head

            return self


        def __next__(self):

            if not self._iter_node:

                raise StopIteration

            val = self._iter_node.value

            self._iter_node = self._iter_node.next

            return val


2. Priority Queue через list + сортировку

class PriorityQueue:

    def __init__(self):

        # хранить кортежи (priority, item)

        self.data = []


    def push(self, item, priority):

        """Добавить с приоритетом."""

        # TODO: append((priority, item))


    def pop(self):

        """Удалить и вернуть элемент с наименьшим приоритетом."""

        # TODO: найти min по первому полю, удалить и вернуть item


    def peek(self):

        """Просмотреть элемент с наименьшим приоритетом."""

        # TODO: аналогичен pop, но без удаления


    def is_empty(self):

        return not self.data


Служба поддержки сайта
Вы используете гостевой доступ (Вход)
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика
На платформе Moodle