Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 n개의 노드를 가진 순환 연결 리스트를 만들고 역순으로 출력하기

순환 연결 리스트(circular linked list)를 생성하고 이를 역순으로 출력하려면, 먼저 'Node' 클래스를 정의해야 합니다.

리스트에 저장된 데이터 요소들을 역순으로 표시하기 위해서는 데이터를 뒤집는 별도의 메서드를 정의할 수 있습니다. Node 클래스에는 두 가지 속성이 있는데, 하나는 노드에 저장된 데이터(data)이고, 다른 하나는 연결 리스트상의 다음 노드(next)에 대한 참조입니다. 순환 연결 리스트에서는 head(머리)와 rear(꼬리)가 서로 인접해 있으며, 노드들이 연결되어 원(circle)을 형성하고 마지막 노드에는 'NULL' 값이 존재하지 않습니다.

또한 초기화 함수를 포함하고 있으며 노드의 head를 'None'으로 초기화하는 'linked_list' 클래스를 추가로 생성해야 합니다.

아래는 이에 대한 예시입니다 −

예제

class Node:
    def __init__(self, my_data):
        self.data = my_data
        self.next = None

class linked_list:
    def __init__(self):
        self.head = None

    def add_data(self, my_data):
        new_node = Node(my_data)
        new_node.next = self.head
        self.head = new_node

    def reverse(self):
        prev = None
        current = self.head
        while(current is not None):
            next = current.next
            current.next = prev
            prev = current
            current = next
        self.head = prev

    def print_it(self):
        temp = self.head
        while(temp):
            print(temp.data)
            temp = temp.next

my_list = linked_list()
my_list.add_data(47)
my_list.add_data(89)
my_list.add_data(34)
my_list.add_data(11)

print("The list is : ")
my_list.print_it()
print("The list is being reversed")
my_list.reverse()
print("The reversed list is : ")
my_list.print_it()

출력 결과

The list is :
11
34
89
47
The list is being reversed
The reversed list is :
47
89
34
11

코드 설명

  • 'Node' 클래스가 생성됩니다. 각 노드는 데이터와 다음 노드에 대한 참조를 가집니다.
  • 필요한 속성들을 가진 또 다른 클래스인 'linked_list' 클래스가 생성됩니다.
  • 연결 리스트에 데이터를 추가하는 데 사용되는 'add_data' 메서드가 정의됩니다. 새 노드는 리스트의 맨 앞(head)에 삽입됩니다.
  • 연결 리스트에 저장된 데이터를 역순으로 뒤집는 'reverse' 메서드가 정의됩니다. 포인터 방향을 하나씩 변경하며 리스트 전체를 뒤집습니다.
  • 연결 리스트의 데이터를 콘솔에 출력하는 'print_it' 메서드가 정의됩니다.
  • 'linked_list' 클래스의 객체가 생성되고, 네 개의 데이터(47, 89, 34, 11)가 순서대로 추가됩니다.
  • 'reverse' 메서드를 호출하여 리스트가 역순으로 뒤집힙니다.
  • 'print_it' 메서드를 사용하여 뒤집힌 결과가 콘솔에 표시됩니다.