컴퓨터 프로그래밍/자료구조
자료구조_링크드리스트_6_탐색 연산(data)
깝돌이
2020. 5. 19. 20:31
자료 구조에서 원하는 조건의 데이터를 찾아내는 연산입니다.
링크드 리스트 탐색 연산은 특정 데이터를 갖는 노드를 리턴합니다.
class Node:
"""링크드 리스트의 노드 클래스"""
def __init__(self, data):
self.data = data # 실제 노드가 저장하는 데이터
self.next = None # 다음 노드에 대한 레퍼런스
class LinkedList:
"""링크드 리스트 클래스"""
def __init__(self):
self.head = None # 링크드 리스트의 가장 앞 노드
self.tail = None # 링크드 리스트의 가장 뒤 노드
def find_node_with_data(self, data):
"""링크드 리스트에서 탐색 연산 메소드. 단, 해당 노드가 없으면 None을 리턴한다"""
iterator = self.head
while(iterator):
if iterator.data is data:
return iterator
else:
iterator = iterator.next
return None
잘 실행이 되는지 봅니다.
# 새로운 링크드 리스트 생성
linked_list = LinkedList()
# 여러 데이터를 링크드 리스트 마지막에 추가
linked_list.append(2)
linked_list.append(3)
linked_list.append(5)
linked_list.append(7)
linked_list.append(11)
# 데이터 2를 갖는 노드 탐색
node_with_2 = linked_list.find_node_with_data(2)
if not node_with_2 is None:
print(node_with_2.data)
else:
print("2를 갖는 노드는 없습니다")
# 데이터 11을 갖는 노드 탐색
node_with_11 = linked_list.find_node_with_data(11)
if not node_with_11 is None:
print(node_with_11.data)
else:
print("11를 갖는 노드는 없습니다")
# 데이터 6 갖는 노드 탐색
node_with_6 = linked_list.find_node_with_data(6)
if not node_with_6 is None:
print(node_with_6.data)
else:
print("6을 갖는 노드는 없습니다")