파이썬 자료구조 링크드 리스트(2)

김현진·2020년 10월 12일
0

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
profile
기록의 중요성

0개의 댓글