■ search_target( ), search_pos( ) 함수 구현: 데이터 검색(순회)
search_target()과 search_pos() 함수는 연결 리스트를 처음부터 끝까지 순회하면서 대상 데이터를 찾거나 위치를 통해 데이터를 가져옵니다. 파이썬의 리스트처럼 인덱싱을 통해 데이터에 한 번에 접근할 수 없고 매번 처음부터 순서대로 순회해야 한다는 점은 연결 리스트의 단점입니다.
코드 12-5 data_structure_1/linked_list.py ⑤ (search_target() 함수)
def search_target(self, target, start = 0): ''' search_target(target, start = 0) -> (data, pos) start로부터 target과 일치하는 첫 번째 데이터와 그 위치를 반환 target이 존재하지 않을 때: -> (None, None) ''' if self.empty(): return None # 첫 번째 노드를 가리킨다 pos = 0 # 노드의 순회 코드 cur = self.head #6 # pos가 탐색 시작 위치 start보다 클 때만 # 대상 데이터와 현재 노드의 데이터를 비교 if pos >= start and target = = cur.data: #8 return cur.data, pos #10 while cur.next: pos += 1 # 노드의 순회 코드 # cur이 노드의 next를 통해 다음 노드로 이동 cur = cur.next #7 # pos가 탐색 시작 위치 start보다 클 때만 # 대상 데이터와 현재 노드의 데이터를 비교 if pos >= start and target = = cur.data: #9 return cur.data, pos #11 return None, None