본문 바로가기
Python/알고리즘&자료구조

Python 알고리즘&자료구조 더블 링크드 리스트(Doubly Linked List)

by code2772 2023. 1. 29.

[ 목차 ]

    728x90
    반응형

    1. 더블 링크드 리스트(Doubly Linked List)

    • 양뱡향으로 연결되어 있어서 노드 탐색이 양쪽으로 모두 가능
    class Node:
      def __init__(self, data, prev=None, next=None):
        self.prev = prev
        self.data = data
        self.next = next
    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 insert_before(self, data, after_data): # 2.5, 3
        if self.head == None:
          self.head = Node(data)
          return True
        else:
          node = self.tail # 노드의 끝을 노드에 넣음
          while node.data != after_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
      def search_from_head(self, data):
        if self.head == None:
          return False
        ndoe = self.head
        while node:
          if node.data == data:
            return node.data
          else:
            node = node.next
        return False
    retdouble_linked_list = NodeMgmt(0)
    
    for data in range(1,11):
      double_linked_list.insert(data)

    문제

    위 코드에서 노드 데이터가 특정 숫자인 노드 앞에 데이터를 추가하는 함수를 만들고 테스트 해보자


    반응형