Computer Science/자료구조

자료구조 | doubly linked list | Linked List

토마토. 2021. 12. 31. 10:01

doubly linked list

기존 SLL Singly Linked List는 단방향으로 연결되어있기에 뒷 노드에서 앞으로 탐색하는 것이 불가능하다.

이 문제를 해결하기 위해 doubly linked list가 제안되었다. 

 

DLL는 각 노드가 link를 left link, right link로 두 가지 가지고 있는 리스트를 의미한다. 

연결은 양방향으로 해줌으로써 삭제와 삽입이 용이해진다. 

 

각 노드는 data field, left link, right link로 구성되며

 

DLL은 Binary tree와 같은 구조에서 쓰인다 

 

 

스켈레톤 코드

class Node:
    def __init(self, data):
        pass
    
class DLL:
    def __init__(self):
        pass
    def insert(self, prev, item):
        pass

 

구현

class Node:
    def __init__(self, data):
        self.data = data
        self.rlink = None
        self.llink = None
    
class DLL:
    def __init__(self):
        self.head = None
        self.rear = None
        self.cnt = None
    def insert(self, item):
        tmp = Node(item)
        if self.head == None:
            self.head = tmp
        else:
            right = self.head.rlink
            self.head.rlink = tmp
            tmp.llink = self.head
            tmp.rlink = right
            
            
    def print(self):
        tmp = self.head
        while tmp != None:
            print(tmp.data)
            tmp = tmp.rlink

d = DLL()
d.insert(6)
d.insert(5)
d.insert(4)
d.print()