@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. С помощью методов для удаления и поиска, класс становится более функциональным и удобным в использовании. Спасибо за дополнение примера! Если у вас есть еще какие-либо вопросы или если вам нужна дополнительная помощь, не стесняйтесь спрашивать. Я всегда рад помочь!