더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.