1편이어 2편을 작성해보겠습니다.
# 노드 생성 class
class MakeClass:
def __init__(self, data, next=None):
self.data = data
self.next = next
# 노드 메소드를 관리하는 class 구현
class Node:
def __init__(self, data):
# 헤드값 지정
self.head = MakeNode(data)
def add(self, data):
# 혹시나 head값이 비어있을경우 (극히 희박함)
if self.head == "":
self.head = MakeNode(data) # 노드생성 후 head에 할당
return
else:
node = self.head # 제일 처음 Node를 node변수에 할당
while node.next:
node = node.next
node.next = Node(data) # node.next가 None 상태이고 Node를 하나 생성 후 할당
def desc(self): # 모든데이터 출력(print)
node = self.head
while node:
print(node.data)
node = node.next
# 특정 노드 삭제 메소드
def delete(self, data):
# self.head값이 비어 있을경우
if self.head == "":
print('해당 노드가 없습니다")
return
# 삭제할려는 data가 head(첫 노드 일 경우)
if self.head.data == data:
temp = self.head
self.head = self.head.next
del temp
# 그 밖의 경우
else:
node = self.head
while node.next:
if node.next.data == data:
temp = node.next # 삭제 할 data
node.next = node.next.next # 삭제 할 node가 node.next 이므로 현재 node의 node.next와 삭제할 node.next.next를 서로 연결해준다.
del temp
return
else: # 아닐 경우는 순회시켜줌
node = node.next