Inversione di una coda utilizzando una coda aggiuntiva [chiusa]

-4

Hai ricevuto 2 code, Q1 e Q2. Q1 è già pieno di n elementi. Q2 è vuoto

Devi invertire tutti gli elementi in Q1.

Non puoi utilizzare nessun altro spazio tranne Q2.

solo le operazioni consentite sarebbero Q.enqueue () e Q.dequeue ()

Complessità temporale - O (nlogn)

ho trovato questa domanda su un sito meno popolare. link ci sono anche poche risposte. non sono in grado di capire le soluzioni, qualcuno può aiutarmi con è una domanda?

    
posta user3738485 31.07.2014 - 12:57
fonte

1 risposta

0

q1 ha n elementi

do

per gli elementi n-1 in q1 prendi il primo elemento fuori da q1 (dequeue) e aggiungilo alla fine (enqueue) q1.Enqueue (q1.Dequeue)

quando sono stati elaborati gli elementi n-1 (l'ultimo elemento di q1 è prossimo)

q2.Enqueue (q1.Dequeue) - spostalo in q2

loop fino a quando q1 è vuoto

In vb assomiglia a questo

    Dim q1 As New Queue(Of Integer)
    Dim q2 As New Queue(Of Integer)

    'add some elements 
    For x As Integer = 1 To 5
        q1.Enqueue(x)
    Next

    Do While q1.Count > 0 'while q1 has elements
        For x As Integer = 1 To q1.Count - 1 'move last to first
            q1.Enqueue(q1.Dequeue)
        Next
        q2.Enqueue(q1.Dequeue) 'move it to q2
    Loop
    
risposta data 31.07.2014 - 13:34
fonte

Leggi altre domande sui tag