class Car:
    def __init__(self, rep, mark):
        self.rep = rep
        self.mark = mark

    def __str__(self):
        return "REP: "+str(self.rep)+" is "+self.mark

    def changeName(self, newMark):
        self.mark = newMark


class Node:
    def __init__(self, data):
        self.next = None
        self.data = data

class PriorityQueue:
    def __init__(self):
        self.head = None

    def pushCar(self, dataCar):
        if self.head == None:
            self.head = Node(dataCar)
        elif self.head.data.rep < dataCar.rep:
            newNode = Node(dataCar)
            newNode.next = self.head
            self.head = newNode
        else:
            item = self.head
            while item.next != None:
                if item.next.data.rep > dataCar.rep:
                    item = item.next
                else:
                    newNode = Node(dataCar)
                    newNode.next = item.next
                    item.next = newNode
                    return
            item.next = Node(dataCar)

    def popCar(self):
        if self.head == None: return None
        data = self.head.data
        self.head = self.head.next
        return data

    def __str__(self):
        item = self.head
        retStr = "PriorityQueue: "
        while item!=None:
            retStr += str(item.data)
            item = item.next
        return retStr


myQueue = PriorityQueue()
myQueue.pushCar(Car(123,"BMW"))
myQueue.pushCar(Car(321,"Skoda"))
myQueue.pushCar(Car(255,"Audi"))

print(myQueue)

print(myQueue.popCar())

print(myQueue)