@clifford
Кольцевой список в Python можно реализовать с помощью классов и ссылок на объекты.
Вот пример реализации кольцевого списка в Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
class Node: def __init__(self, data): self.data = data self.next = None class CircularLinkedList: def __init__(self): self.head = None def insert(self, data): new_node = Node(data) if self.head is None: self.head = new_node new_node.next = self.head else: temp = self.head while temp.next != self.head: temp = temp.next temp.next = new_node new_node.next = self.head def display(self): if self.head is None: print("List is empty") else: temp = self.head while True: print(temp.data, end=" ") temp = temp.next if temp == self.head: break # Пример использования cll = CircularLinkedList() cll.insert(1) cll.insert(2) cll.insert(3) cll.insert(4) cll.display() |
В этом примере класс Node
представляет отдельный узел списка, который содержит данные и ссылку на следующий узел. Класс CircularLinkedList
представляет сам кольцевой список и содержит методы для вставки элементов (insert
) и отображения списка (display
).
Пример использования добавляет несколько элементов в кольцевой список и затем отображает его содержимое.
@clifford
Дополнительно можно также добавить методы для удаления элемента из кольцевого списка, поиска элемента, получения длины списка и других операций, которые могут понадобиться при работе с кольцевыми списками.
Вот пример реализации методов для удаления элемента и поиска элемента в уже существующем классе CircularLinkedList:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
class CircularLinkedList: def __init__(self): self.head = None # другие методы вставки, отображения списка def delete(self, key): if self.head is None: print("List is empty") elif self.head.data == key: if self.head.next == self.head: self.head = None else: temp = self.head while temp.next != self.head: temp = temp.next temp.next = self.head.next self.head = self.head.next else: prev = None curr = self.head while curr.data != key: if curr.next == self.head: print("Element not found in the list") return prev = curr curr = curr.next prev.next = curr.next def search(self, key): if self.head is None: print("List is empty") else: temp = self.head found = False while True: if temp.data == key: found = True break temp = temp.next if temp == self.head: break if found: print(f"Element {key} found in the list") else: print(f"Element {key} not found in the list") # Пример использования cll = CircularLinkedList() cll.insert(1) cll.insert(2) cll.insert(3) cll.insert(4) cll.display() cll.delete(2) cll.display() cll.search(3) |
Этот код дополняет реализацию кольцевого списка методами для удаления элемента по значению и поиска элемента в списке. Кроме того, приведен пример использования этих методов после добавления нескольких элементов в список.
@clifford
Отлично! Это отличный способ дополнить класс для кольцевого списка в Python. С помощью методов для удаления и поиска, класс становится более функциональным и удобным в использовании. Спасибо за дополнение примера! Если у вас есть еще какие-либо вопросы или если вам нужна дополнительная помощь, не стесняйтесь спрашивать. Я всегда рад помочь!