enqueue(x): while !out.isEmpty(): in.push(out.pop()) in.push(x) x dequeue(): while !in.isEmpty(): out.push(in.pop()) return out.pop()Elements in out are already in dequeue order so no need to move to in.
enqueue(x): in.push(x) x dequeue(): if !out.isEmpty(): while !in.isEmpty(): out.push(in.pop()) return out.pop()
stack with 2 queues. for push, enqueue into non-empty queue (or q2). for pop, dequeue all from non-empty queue, enqueue into other and return last.
push(T x): if !q1.isEmpty(): q = q1 else q = q2 q.enqueue(x) T pop(): if q1.isEmpty() && q2.isEmpty(): throw "empty" if !q1.isEmpty(): q = q1 other = q2 else q = q2 other = q1 n = null while !q.isEmpty(): n = q.dequeue() if q.isEmpty(): break; other.enqueue(n) return n
No comments:
Post a Comment