def InitQueue(max_len_par): global Q global tail global head global max_len head = 0 tail = 0 max_len = max_len_par Q = [] #esercizio: fargli ritornare False se la coda e' piena, nel qual caso non fare l'inserimento; altrimenti, ritorna True dopo avere inserito def Enqueue(x): global Q global tail global max_len if (len(Q) > tail): Q[tail] = x else: Q = Q + [x] if (tail == max_len - 1): tail = 0 else: tail = tail + 1 #esercizio: se la coda e' vouta, fargli ritornare False def Dequeue(): global Q global head global max_len x = Q[head] if (head == max_len - 1): head = 0 else: head = head + 1 return x def QueueFull(): global Q global tail global head global max_len #esercizio: riscrivere la funzione in modo che l'if non ci sia (quindi, deve esserci una sola return) if (tail == max_len - 1 and head == 0): return True else: return tail + 1 == head def QueueEmpty(): global tail global head return tail == head #esercizio: fare la vera PrintQueue, ovvero una funzione che scriva solo i "veri" elementi di Q def PrintQueue(): global Q global tail global head global max_len print Q print head print tail print max_len #esercizio: aggiungere un funzione NumElements