[자료구조] #4_2 링크드 리스트
** 링크드 리스트의 복잡한 기능
- 링크드 리스트는 유지관리에 부가적인 구현이 필요함
- 중간 데이터 삽입, 삭제시
** 파이썬 객체지향 프로그래밍으로 링크드 리스트 구현
class Node:
def __init__(self, data, next=None):
self.data = data
self.next = next
class NodeMgmt:
def __init__(self, data):
self.head = Node(data)
# 노드 삽입
def add(self, data):
if self.head == '':
self.head = Node(data)
else:
node = self.head
while node.next:
node = node.next
node.next = Node(data)
# 링크드 리스트 출력
def desc(self):
node = self.head
while node:
print (node.data)
node = node.next
# 링크드 리스트 삭제
def delete(self, data):
if self.head == '':
print ("해당 값을 가진 노드가 없습니다.")
return
if self.head.data == data: # 삭제할 노드가 맨 앞 노드(head)일 경우
temp = self.head # self.head를 바로 삭제하면 밑의 코드를 실행할 수 없음
self.head = self.head.next
del temp
else:
node = self.head
while node.next:
if node.next.data == data: # 삭제할 노드 탐색
temp = node.next
node.next = node.next.next # 삭제할 노드 앞뒤 노드 연결
del temp
return
else:
node = node.next
# 특정 데이터 값을 갖는 노드 검색
def search_node(self, data):
node = self.head
while node:
if node.data == data:
return node
else:
node = node.next