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

Python으로 구현하는 원형 연결 리스트(Circular Linked List) 완벽 가이드

Python에서 원형 연결 리스트(Circular Linked List)를 생성하려면 먼저 'Node' 클래스를 정의해야 합니다. 노드에 저장된 데이터를 화면에 출력하기 위해서는 별도의 메서드를 추가로 정의하면 됩니다. Node 클래스에는 두 가지 핵심 속성이 있는데, 하나는 노드에 담긴 데이터(data)이고, 다른 하나는 연결 리스트의 다음 노드(next)에 접근하기 위한 참조입니다.

원형 연결 리스트의 가장 큰 특징은 헤드(head)와 꼬리(rear)가 서로 인접해 있다는 점입니다. 즉, 마지막 노드가 다시 첫 번째 노드와 연결되어 하나의 원(circle)을 형성하며, 일반 연결 리스트와 달리 마지막 노드에 'NULL' 값이 존재하지 않습니다.

또한 초기화 함수를 포함하는 'linked_list' 클래스를 별도로 작성해야 하며, 이 함수에서 리스트의 head를 'None'으로 초기화합니다.

아래는 실제 동작 예시입니다.

예제 코드

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

class circularLinkedList: 
    def __init__(self):
        self.head = None
    def add_data(self, my_data):
        ptr_1 = Node(my_data)
        temp = self.head    
        ptr_1.next = self.head

        if self.head is not None:
            while(temp.next != self.head):
                temp = temp.next
            temp.next = ptr_1
        else:
            ptr_1.next = ptr_1
        self.head = ptr_1

    def print_it(self):
        temp = self.head
        if self.head is not None:
            while(True):
                print("%d" %(temp.data)),
                temp = temp.next
                if (temp == self.head):
                    break
my_list = circularLinkedList()
print("Elements are added to the list ")
my_list.add_data (56)
my_list.add_data (78)
my_list.add_data (12)
print("The data is : ")
my_list.print_it()

실행 결과

Elements are added to the list
The data is :
12
78
56

코드 설명

  • 'Node' 클래스를 생성합니다.
  • 필요한 속성들을 갖춘 'circularLinkedList' 클래스를 추가로 생성합니다.
  • 'init' 함수는 첫 번째 요소, 즉 'head'를 'None'으로 초기화하는 역할을 합니다.
  • 'add_data' 메서드를 정의하여 원형 연결 리스트에 새로운 데이터를 추가합니다.
  • 'print_it' 메서드를 정의하여 연결 리스트의 데이터를 콘솔에 출력합니다.
  • 'linked_list' 클래스의 객체를 생성한 뒤, 해당 객체의 메서드를 호출하여 데이터를 추가합니다.
  • 마지막으로 'print_it' 메서드를 사용해 결과를 콘솔에 출력합니다.

참고 사항

위 예제에서 데이터가 12 → 78 → 56 순서로 출력되는 이유는 새 데이터가 항상 리스트의 맨 앞(head)에 삽입되기 때문입니다. 또한 출력 부분의 print("%d" %(temp.data))는 Python 2 문법이므로, Python 3 환경에서는 print(temp.data) 형태로 수정해서 사용하는 것이 좋습니다.