zoukankan      html  css  js  c++  java
  • python 栈和队列

    class Stack:
    def __init__(self):
    self.items = []
    def isEmpty(self):
    return self.items == []
    def push(self,item):
    self.items.append(item)
    def pop(self):
    return self.items.pop()
    def peek(self):
    return self.items[len(self.items)-1]
    def size(self):
    return len(self.items)
    def divideBy2(decNumber):
    remstack = Stack()
    while decNumber > 0:
    rem = decNumber % 2
    remstack.push(rem)
    decNumber = decNumber // 2
    binString = ""
    while not remstack.isEmpty():
    binString = binString + str(remstack.pop())
    return binString
    # print(divideBy2(42))
    def baseConverter(decNumber,base):
    digits = "0123456789ABCDEF"
    remstack = Stack()
    while decNumber > 0:
    rem = decNumber % base
    remstack.push(rem)
    decNumber = decNumber // base
    newString = ""
    while not remstack.isEmpty():
    newString = newString + digits[remstack.pop()]
    return newString
    # print(baseConverter(25,2))
    # print(baseConverter(25,16))
    def infixToPostfix(infixexpr):
    prec = {}
    prec["*"] = 3
    prec["/"] = 3
    prec["+"] = 2
    prec["-"] = 2
    prec["("] = 1
    opStack = Stack()
    postfixList = []
    tokenList = infixexpr.split()
    for token in tokenList:
    if token in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or token in "0123456789":
    postfixList.append(token)
    elif token == '(':
    opStack.push(token)
    elif token == ')':
    topToken = opStack.pop()
    while topToken != '(':
    postfixList.append(topToken)
    topToken = opStack.pop()
    else:
    while (not opStack.isEmpty()) and
    (prec[opStack.peek()] >= prec[token]):
    postfixList.append(opStack.pop())
    opStack.push(token)
    while not opStack.isEmpty():
    postfixList.append(opStack.pop())
    return " ".join(postfixList)

    def postfixEval(postfixExpr):
    operandStack = Stack()
    tokenList = postfixExpr.split()

    for token in tokenList:
    if token in "0123456789":
    operandStack.push(int(token))
    else:
    operand2 = operandStack.pop()
    operand1 = operandStack.pop()
    result = doMath(token,operand1,operand2)
    operandStack.push(result)
    return operandStack.pop()

    def doMath(op, op1, op2):
    if op == "*":
    return op1 * op2
    elif op == "/":
    return op1 / op2
    elif op == "+":
    return op1 + op2
    else:
    return op1 - op2



    class Queue:
    def __init__(self):
    self.items = []
    def isEmpty(self):
    return self.items == []
    def enqueue(self,item):
    self.items.insert(0,item)
    def dequeue(self):
    return self.items.pop()
    def size(self):
    return len(self.items)

    def hotPotato(namelist, num):
    simqueue = Queue()
    for name in namelist:
    simqueue.enqueue(name)

    while simqueue.size() > 1:
    for i in range(num):
    print(i)
    print(simqueue.enqueue(simqueue.dequeue()))

    simqueue.dequeue()

    return simqueue.dequeue()

    print(hotPotato(["Bill","David","Susan","Jan e","Kent","Brad"],7))


























  • 相关阅读:
    LeetCode 811. Subdomain Visit Count (子域名访问计数)
    LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
    LeetCode 939. Minimum Area Rectangle (最小面积矩形)
    LeetCode 781. Rabbits in Forest (森林中的兔子)
    LeetCode 739. Daily Temperatures (每日温度)
    三种方式实现按钮的点击事件
    239. Sliding Window Maximum
    14.TCP的坚持定时器和保活定时器
    13.TCP的超时与重传
    12.TCP的成块数据流
  • 原文地址:https://www.cnblogs.com/Jt00/p/7759998.html
Copyright © 2011-2022 走看看