def sort_stack(stack): """ 1 _ -> _ _ -> _ _ -> _ _ -> _ 3 -> 1 _ 3 _ 3 _ _ 3 _ 2 _ 2 2 _ 2 _ 2 1 2 1 3 1 _ 1 3 _ """ helper = Stack() while not stack.empty(): current = stack.pop() while not helper.empty() and helper.peek() > current: stack.push(helper.pop()) helper.push(current) while not helper.empty(): stack.push(helper.pop())
class MyQueue: def __init__(self): self.data = Stack() self.reverse_data = Stack() def push(self, value): self.data.push(value) def _fill_reverse_data(self): while not self.data.empty(): value = self.data.pop() self.reverse_data.push(value) def pop(self): if self.reverse_data.empty(): self._fill_reverse_data() return self.reverse_data.pop() def peek(self): if self.reverse_data.empty(): self._fill_reverse_data() return self.reverse_data.peek()
from linkedlist import Stack def sort_stack(stack): """ 1 _ -> _ _ -> _ _ -> _ _ -> _ 3 -> 1 _ 3 _ 3 _ _ 3 _ 2 _ 2 2 _ 2 _ 2 1 2 1 3 1 _ 1 3 _ """ helper = Stack() while not stack.empty(): current = stack.pop() while not helper.empty() and helper.peek() > current: stack.push(helper.pop()) helper.push(current) while not helper.empty(): stack.push(helper.pop()) a = Stack() for i in [1, 4, 5, 3, 2]: a.push(i) sort_stack(a) while not a.empty(): print a.pop()