pythonでアルゴリズムとデータ構造を書く キュー

アルゴリズムとデータ構造のプログラムをPythonで書く

4.3 キュー

class Queue:
    def __init__(self,size =100005):
        self.size = size
        head = tail = 0
    
    def next(self,n):
        return(n +1) % self.size
    
    def enqueue(self,x,y):
        P.append*1
        Queue.tail = (Queue.tail + 1) % self.size
    
    def dequeue(self):
        #print(Queue.head)
        x = P[Queue.head]
        Queue.head = (Queue.head + 1) % self.size
        return x
#プロセスの個数nと処理時間qを格納
n,q = map(intinput().split())
#Pにプロセスの列を格納
P = []
for x in range(1,n+1):
    name,t =input().split()
    P.append((name, int(t)))
#シュミュレーション
p = Queue()
Queue.head = 0
Queue.tail = n
elaps = 0
while  Queue.head != Queue.tail:
    #dequeueでプロセスの値を取得してuに格納
    u = p.dequeue()
    #print(u[1])
    #処理時間qとプロセスの時間を比較して小さい方を取得
    c = min(u[1],q)
    t2 = u[1] - c
    #print(t2)
    #処理時間elapsを加算
    elaps = elaps + c
    #t2(プロセスの時間 - 処理時間q)が0以上ならキューの末尾に追加、そうでないなら出力
    if t2 > 0:
        p.enqueue(u[0],t2)
    else:
        print(u[0] ,end=" "),
        print(elaps)

 

Cも別に詳しいわけではないので、

Cにてどのような実装なのか理解する⇒Pythonでの実装を考える

ってとこが大変

 

 

 

*1:x, y