示例#1
0
def sortStack(stack):
    if stack.isEmpty():
        return 'Stack is empty'
    less = Stack()
    middle = Stack()
    greater = Stack()
    return sortStackHelper(stack, less, middle, greater)
示例#2
0
 def __init__(self, N):
     self.solutionSize = N
     self.first = Stack()
     self.second = Stack()
     self.third = Stack()
     for i in range(N, 0, -1):
         self.first.push(i)
示例#3
0
 def push(self, data):
     lengthOfSet = len(self.stacks)
     indexOfUnfilledStack = None
     for i in range(0, lengthOfSet):
         if self.stacks[i].stackSize() < self.capacity:
             indexOfUnfilledStack = i
             break
     if indexOfUnfilledStack != None:
         self.stacks[indexOfUnfilledStack].push(data)
     else:
         self.stacks.append(Stack())
         self.stacks[lengthOfSet].push(data)
示例#4
0
def sortStackHelper(stack, less, middle, greater):
    if stack.isEmpty():
        return Stack()
    middle.push(stack.pop())
    if stack.isEmpty():
        return middle
    while not stack.isEmpty():
        data = stack.pop()
        if data >= middle.peek():
            greater.push(data)
        else:
            less.push(data)
    leftHand = sortStackHelper(less, Stack(), Stack(), Stack())
    rightHand = sortStackHelper(greater, Stack(), Stack(), Stack())
    leftHand.push(middle.pop())
    while not rightHand.isEmpty():
        middle.push(rightHand.pop())
    while not middle.isEmpty():
        leftHand.push(middle.pop())
    return leftHand
示例#5
0
 def __init__(self):
     self.stack = Stack()
     self.helpderStack = Stack()