>  기사  >  백엔드 개발  >  Python에서 단일 연결 목록을 구현하는 방법

Python에서 단일 연결 목록을 구현하는 방법

PHPz
PHPz원래의
2024-09-10 06:46:021099검색

How to Implement Singly Linked List in Python

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

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

    def add_front(self,value):
        new_node = Node(value)
        new_node.next = self.head
        self.head = new_node
    def add_back(self,value):
        new_node = Node(value)
        if self.head is None:
            self.head = new_node
        else:
            current = self.head
            while current.next is not None:
                current = current.next
            current.next = new_node
    def print_list(self):
        current = self.head
        while current is not None:
            print(current.value)
            current = current.next

list1 = LinkedList()

list1.add_front(1)
list1.add_front(2)
list1.add_back(3)
list1.print_list()

1. 노드 클래스:

  • 연결된 목록의 개별 요소를 나타냅니다.
  • 각 노드에는 데이터를 저장하는 값과 목록의 다음 노드를 가리키는 next라는 두 가지 속성이 있습니다.
  • 노드가 생성되면 다음 포인터가 없음으로 설정됩니다.

2. LinkedList 클래스:

  • 연결리스트 작업을 관리합니다.
  • 연결된 목록의 시작점인 속성 head가 있습니다. 처음에는 목록이 비어 있으므로 head는 None으로 설정됩니다.

3. add_front 메소드:

  • 연결 리스트 앞에 새 노드를 추가합니다.
  • 지정된 값으로 새 노드가 생성됩니다.
  • 새 노드의 다음 포인터는 목록의 현재 헤드로 설정됩니다.
  • 그런 다음 목록의 헤드가 새 노드로 업데이트됩니다.

4. add_back 메소드:

  • 연결된 목록의 끝에 새 노드를 추가합니다.
  • 지정된 값으로 새 노드가 생성됩니다.
  • 목록이 비어 있으면(즉, 헤드가 없음) 새 노드가 헤드로 설정됩니다.
  • 목록이 비어 있지 않으면 목록의 끝으로 이동한 후 마지막 노드의 다음 포인터가 새 노드를 가리키도록 업데이트합니다.

5. print_list 메소드:

  • 연결리스트의 모든 값을 처음부터 끝까지 출력합니다.
  • 헤드에서 시작하여 끝(없음)에 도달할 때까지 다음 포인터를 사용하여 각 노드를 반복하고 각 노드의 값을 인쇄합니다.

6. 사용 예:

  • LinkedList의 인스턴스가 생성됩니다.
  • add_front를 두 번 호출하여 값이 1과 2인 노드를 목록 앞에 추가합니다.
  • add_back을 호출하여 값이 3인 노드를 목록 끝에 추가합니다.
  • print_list는 연결된 목록에 있는 모든 노드의 값을 인쇄하기 위해 호출됩니다. 출력은 2, 1, 3이며 노드가 올바르게 추가되었음을 나타냅니다.

위 내용은 Python에서 단일 연결 목록을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.