Python에서 연결 목록을 구현하는 방법은 무엇입니까?



이 기사에서는 업데이트를 삽입하고 연결 목록에서 요소를 제거하는 다양한 방법을 사용하여 Python에서 연결 목록을 만드는 방법을 보여줍니다.

Python 프로그래밍 언어는 독특하고 쉽게 배울 수있는 다양한 기본 구현을 갖춘 오픈 소스 언어입니다. 이기는 하지만 연결 목록의 개념을 지원하지 않는 경우 다른 구현을 통해 연결 목록을 얻을 수있는 방법이 있습니다. 이 기사에서는 Python에서 연결 목록을 만드는 방법을 배웁니다. 이 블로그에서 다루는 주제는 다음과 같습니다.

의 시작하자!!





배열 C ++ 내림차순 정렬

연결된 목록이란 무엇입니까?

링크 목록은 데이터 유형이 유사한 노드 시퀀스이며 각 노드에는 하나의 데이터 개체와 다음 노드에 대한 포인터가 포함됩니다.

연결 목록은 여러 노드의 모음이있는 선형 데이터 구조입니다. 어디 e각 요소는 자체 데이터와 다음 요소의 위치에 대한 포인터를 저장합니다. 연결된 목록의 마지막 링크는 null을 가리키며 체인의 끝을 나타냅니다. 연결 목록의 요소를 마디 . 첫 번째 노드는 머리 .마지막 노드가 호출됩니다.그만큼 꼬리 .
연결 목록-파이썬의 연결 목록-edureka표준 파이썬 라이브러리에는 연결 목록이 없습니다. 노드 개념을 사용하여 링크 목록 데이터 구조의 개념을 구현할 수 있습니다.



이제 Linked에 대해 배웠습니다. 이제 연결된 목록 구현으로 이동하겠습니다.

연결된 목록 구현

Linked List를 만들기 위해 노드 개체를 만들고이 노드 개체를 사용할 다른 클래스를 만듭니다.
Node 클래스 생성을위한 코드입니다.
위의 프로그램은 세 개의 데이터 요소로 연결된 목록을 만듭니다.

class Node (object) : # 클래스 변수를 초기화하는 생성자 def __init __ (self, data = None, next_node = None) : self.data = data self.next_node = next_node #get data def get_data (self) : return self.data # 다음 값 얻기 def get_next (self) : return self.next_node # 다음 데이터 설정 def set_next (self, new_next) : self.next_node = new_next

링크 목록의 구현은 연결 목록에서 다음 기능으로 구성됩니다.
하나. 끼워 넣다 :이 메서드는 연결 목록에 새 노드를 삽입합니다.
2. 크기 :이 메서드는 연결된 목록의 크기를 반환합니다.
삼. 검색 :이 메서드는 데이터가 포함 된 노드를 반환하고 그렇지 않으면 오류가 발생합니다.
네. 지우다 :이 메소드는 데이터가 포함 된 노드를 삭제합니다. 그렇지 않으면 오류가 발생합니다.



연결된 목록의 방법을 볼 수 있습니다.

연결 목록의 Init 메서드

class LinkedList (객체) : def __init __ (self, head = None) : self.head = head

Init 메서드는 초기화에 사용됩니다. 수업 목록에 노드가 없으면 변수 없음으로 설정됩니다.

끼워 넣다:

def insert (self, data) : new_node = Node (data) new_node.set_next (self.head) self.head = new_node

이 삽입 메소드는 데이터를 가져 와서 주어진 데이터로 새 노드를 초기화하고 목록에 추가합니다. 기술적으로는 목록의 아무 곳에 나 노드를 삽입 할 수 있지만이를 수행하는 가장 간단한 방법은 목록의 헤드에 배치하고 새 노드를 이전 헤드에 지정하는 것입니다 (다른 노드를 라인 아래로 밀어내는 것과 같습니다).

크기

# 목록에있는 노드의 총 수를 반환합니다. def size (self) : current = self.head count = 0 while current : count + = 1 current = current.get_next () return count

크기 방법은 매우 간단합니다. 기본적으로 더 이상 찾을 수 없을 때까지 노드를 계산하고 찾은 노드 수를 반환합니다. 이 메서드는 헤드 노드에서 시작하여 끝까지 도달 할 때까지 노드 라인을 따라 이동하며 (끝에 도달하면 현재는 없음) 확인한 노드 수를 추적합니다.

검색

# nodeData가있는 노드를 목록에 반환, 노드가 없으면 오류가 발생 함 def search (self, nodeData) : current = self.head isPresent = False while current, isPresent is False : if current.get_data () == nodeData : isPresent = 참 그렇지 않으면 : current = current.get_next () 만약 current가 None이면 : ValueError ( 'Data not present in list') return current

검색은 실제로 크기와 매우 비슷하지만 전체 노드 목록을 순회하는 대신 각 정류장에서 현재 노드에 요청 된 데이터가 있는지 확인합니다. 그렇다면 해당 데이터를 보유한 노드를 반환합니다. 메서드가 전체 목록을 통과했지만 여전히 데이터를 찾지 못한 경우 값 오류가 발생하고 데이터가 목록에 없음을 사용자에게 알립니다.

지우다

# 연결 목록에서 노드 제거는 노드가 없으면 오류를 반환합니다. def delete (self, nodeData) : current = self.head previous = None isPresent = False while current이고 isPresent는 False : if current.get_data () == nodeData : isPresent = True else : 이전 = 현재 현재 = current.get_next () 현재가 없음 인 경우 : 이전이 없음 인 경우 ValueError ( '데이터가 목록에 없음') 발생 : self.head = current.get_next () else : previous.set_next ( current.get_next ())

delete 메소드는 검색과 동일한 방식으로 목록을 순회하지만 현재 노드를 추적하는 것 외에도 delete 메소드는 마지막으로 방문한 노드도 기억합니다. 삭제가 마침내 삭제하려는 노드에 도달하면. 단순히 '도약'하여 체인에서 해당 노드를 제거합니다.

자바의 선택 정렬 프로그램

즉, delete 메서드가 삭제하려는 노드에 도달하면 마지막으로 방문한 노드 ( '이전'노드)를보고 이전 노드의 포인터를 재설정합니다. 곧 삭제 될 노드를 가리키는 대신.

라인의 다음 노드를 가리 킵니다. 삭제되는 불량 노드를 가리키는 노드가 없으므로 목록에서 효과적으로 제거됩니다!

이것으로 파이썬이 실제로 링크드리스트의 개념을 지원하지 않더라도 유사한 구현으로 파이썬에서 링크드리스트를 만드는 방법을 배웠던이 기사의 끝으로 이동합니다. 이 튜토리얼에서 여러분과 공유 한 모든 내용이 명확하기를 바랍니다.

“Linked List In Python”에서 관련 기사를 찾았다면 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사입니다.

우리는 당신의 여정의 모든 단계에서 당신을 돕고 싶어하는 학생과 전문가를 위해 설계된 커리큘럼을 마련하기 위해 여기 있습니다. . 이 과정은 Python 프로그래밍을 먼저 시작하고 다양한 Python 개념과 함께 핵심 및 고급 Python 개념을 교육하도록 설계되었습니다. 처럼

질문이 있으시면 'Python의 링크 된 목록'의 댓글 섹션에있는 모든 질문에 자유롭게 질문하시면 저희 팀이 기꺼이 답변 해 드리겠습니다.