Example #1
0
def reverse_string(string):
    string_stack = Stack()
    reversed_string = ''
    for i in range(len(string)):
        string_stack.append(string[i])
    for i in range(len(string)):
        reversed_string += string_stack.read()
        string_stack.remove()
    return reversed_string
Example #2
0
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()
Example #3
0
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())
Example #4
0
 def pathto(self, v):
     """Return the paths to a vertex"""
     if not self.connected(v): return None
     path = Stack()
     while v != self.source:
         path.push(v)
         v = self.edgeto[v]
     path.push(v)
     return path
Example #5
0
 def __init__(self):
     self.data = Stack()
     self.reverse_data = Stack()
Example #6
0
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()