파이썬

[자료구조] 더블 링크드리스트 Dubly Linked List

묘 Myo 2022. 4. 18. 00:11
  # insert_before(2.5, 3)
  def insert_before(self, data, before_data):
    if self.head == None:
      self.head = Node(data)
      return True
    else:
      node = self.tail
      while node.data != before_data:
        node = node.prev
        if node == None:
          return False
      new = Node(data)
      before_new = node.prev
      before_new.next = new
      new.prev = before_new
      new.next = node
      node.prev = new
      return True

양방향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능

class NodeMgmt:
  def __init__(self, data):
    self.head = Node(data)
    self.tail = self.head

  def insert(self, data):
    if self.head == None: # 첫 데이터
      self.head = Node(data)
      self.tail = self.head

    else:
      node = self.head
      while node.next:
        node = node.next
      new = Node(data)
      node.next = new
      new.prev = node
      self.tail = new

  def node_print(self):
    node = self.head
    while node:
      print(node.data)
      node = node.next

  def search_from_head(self, data):
    if self.head == None:
      return False
    node = self.head
    while node:
      if node.data == data:
        return node
      else:
        node = node.next
    return False

  def search_from_tail(self, data):
    if self.tail == None:
      return False
    node = self.tail
    while node:
      if node.data == data:
        return node
      else:
        node = node.prev
    return False

 

'파이썬' 카테고리의 다른 글

[데이터 분석] 넘파이 모듈 Numpy  (0) 2022.04.19
[자료구조] 시간복잡도  (0) 2022.04.18
[자료구조] 링크드 리스트 Linked List  (0) 2022.04.18
[자료구조] 스택 stack  (0) 2022.04.17
[자료구조] 큐queue  (0) 2022.04.17