stack应用之逆波兰

来源:互联网 发布:数据库的三藩市 编辑:程序博客网 时间:2024/04/29 11:46

stack

import sysclass Stack:        def __init__(self):                self.items=[]        def push(self,item):                try:                        self.items.append(item)                except:                        print sys.exc_info()        def pop(self):                try:                        self.items.pop()                except:                        print sys.exc_info()        def clear(self):                try:                        del self.items[:]                except:                        print sys.exc_info()        def empty(self):                return len(self.items)==0        def size(self):                return len(self.items)        def top(self):                try:                        return self.items[self.size()-1]                except:                        print sys.exc_info()

逆波兰

import stackdef evalRPN(tokens):        operators="+-*/"        stacktemp=stack.Stack()        for item in tokens:                #print item,"======================"                #print stacktemp.items                if operators.find(item)==-1:                        stacktemp.push(item)                else:                        leftn=int(stacktemp.top())                        stacktemp.pop()                        rightn=int(stacktemp.top())                        stacktemp.pop()                        if item=='+':                                stacktemp.push(str(leftn+rightn))                        elif item=='-':                                stacktemp.push(str(rightn-leftn))                        elif item=='*':                                stacktemp.push(str(leftn*rightn))                        elif item=='/':                                stacktemp.push(str(rightn/leftn))        returnValue=int(stacktemp.top())        stacktemp.pop()        return returnValueif __name__=="__main__":        tokens= ["2", "1", "+", "3", "*"]        print evalRPN(tokens)


0 0
原创粉丝点击