본문 바로가기
자료구조

자료구조 - 양방향 연결리스트 (DoublyLinkedList) python code

by ddahu 2023. 2. 13.
class Node:
    def __init__(self,data):
        self.data = data
        self.next = None
        self.prev = None

class DoublyLinkedList:
    def __init__(self):
        self.head = Node(None)
        self.tail = Node(None)

    def addData(self,data,beforData):
        if self.head == None:
            self.head = Node(data,None,None)
            self.tail = self.head
        elif beforData == None:
            self.tail.next = Node(data,None,self.tail)
            self.tial = self.tail.next
        else:
            cur = self.head
            prev = cur
            while cur != None:
                if cur.data == beforData:
                    if cur == self.head:
                        self.head = Node(data, self.head, None)
                        self.head.next.prev = self.head
                    else:
                        prev.next = Node(data,cur,prev)
                        cur.prev = prev.next
                    break
                prev = cur
                cur = cur.next
    
    def removeData(self,data):
        cur = self.head
        prev = cur
        
        while cur != None:
            if cur.data == data:
                if cur == self.head and cur == self.tail:
                    self.head,self.tail = None,None
                elif cur == self.head:
                    self.head,self.head.prev = cur.next, None
                elif cur == self.tail:
                    self.tail, self.tail.next = self.tail.prev , None
                else:
                    prev.next = cur.next
                    cur.next.prev = prev
                break
            prev = cur
            cur = cur.next