다음 코드는 위의 코드에서 delete 메서드만 추가한 것이므로 해당 메서드만 확인하면 됨
연습2: 위 코드에서 노드 데이터가 특정 숫자인 노드를 찾는 함수를 만들고, 테스트해보기 테스트: 임의로 1 ~ 9까지 데이터를 링크드 리스트에 넣어보고, 데이터 값이 4인 노드의 데이터 값 출력해보기
In [ ]:
classNode:def__init__(self, data):self.data=dataself.next=NoneclassNodeMgmt:def__init__(self, data):self.head=Node(data)defadd(self, data):ifself.head=='':self.head=Node(data)else:node=self.headwhilenode.next:node=node.nextnode.next=Node(data)defdesc(self):node=self.headwhilenode:print (node.data)node=node.nextdefdelete(self, data):ifself.head=='':print ('해당 값을 가진 노드가 없습니다.')returnifself.head.data==data: # 경우의 수1: self.head를 삭제해야할 경우 - self.head를 바꿔줘야 함temp=self.head# self.head 객체를 삭제하기 위해, 임시로 temp에 담아서 객체를 삭제했음self.head=self.head.next# 만약 self.head 객체를 삭제하면, 이 코드가 실행이 안되기 때문!deltempelse:node=self.headwhilenode.next: # 경우의 수2: self.head가 아닌 노드를 삭제해야할 경우ifnode.next.data==data:temp=node.nextnode.next=node.next.nextdeltemppasselse:node=node.nextdefsearch_node(self, data):node=self.headwhilenode:ifnode.data==data:returnnodeelse:node=node.next
연습3: 위 코드에서 노드 데이터가 특정 숫자인 노드 앞에 데이터를 추가하는 함수를 만들고, 테스트해보기 - 더블 링크드 리스트의 tail 에서부터 뒤로 이동하며, 특정 숫자인 노드를 찾는 방식으로 함수를 구현하기 - 테스트: 임의로 0 ~ 9까지 데이터를 링크드 리스트에 넣어보고, 데이터 값이 2인 노드 앞에 1.5 데이터 값을 가진 노드를 추가해보기
연습4: 위 코드에서 노드 데이터가 특정 숫자인 노드 뒤에 데이터를 추가하는 함수를 만들고, 테스트해보기 - 더블 링크드 리스트의 head 에서부터 다음으로 이동하며, 특정 숫자인 노드를 찾는 방식으로 함수를 구현하기 - 테스트: 임의로 0 ~ 9까지 데이터를 링크드 리스트에 넣어보고, 데이터 값이 1인 노드 다음에 1.7 데이터 값을 가진 노드를 추가해보기