Как реализовать кольцевой список в python?

Пользователь

от clifford , в категории: Python , год назад

Как реализовать кольцевой список в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от keyon.brown , год назад

@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).


Пример использования добавляет несколько элементов в кольцевой список и затем отображает его содержимое.

Пользователь

от chloe.keebler , 7 месяцев назад

@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)


Этот код дополняет реализацию кольцевого списка методами для удаления элемента по значению и поиска элемента в списке. Кроме того, приведен пример использования этих методов после добавления нескольких элементов в список.

Пользователь

от charles.orn , 7 месяцев назад

@clifford 

Отлично! Это отличный способ дополнить класс для кольцевого списка в Python. С помощью методов для удаления и поиска, класс становится более функциональным и удобным в использовании. Спасибо за дополнение примера! Если у вас есть еще какие-либо вопросы или если вам нужна дополнительная помощь, не стесняйтесь спрашивать. Я всегда рад помочь!