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))


























  • 相关阅读:
    day30 python类的继承,抽象类等
    20170702-变量说明,静态方法,类方法区别,断点调试,fork,yield协程,进程,动态添加属性等。。
    day29 面向对象入门
    day28 import,from * import *,__name__
    day27 模块:正则re, configparser, subprocess
    day26 re正则表达式
    MD5的学习与练习
    HBase
    Struts13---Ognl
    Struts12---文件的下载
  • 原文地址:https://www.cnblogs.com/Jt00/p/7759998.html
Copyright © 2011-2022 走看看