zoukankan      html  css  js  c++  java
  • Python实现栈

    
    

    栈的操作

    
    
    • Stack() 创建一个新的空栈
    • push(item) 添加一个新的元素item到栈顶
    • pop() 弹出栈顶元素
    • peek() 返回栈顶元素
    • is_empty() 判断栈是否为空
    • size() 返回栈的元素个数


    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)
    from pythonds.basic.stack import Stack
    
    s = Stack()
    
    print(s.isEmpty())
    s.push(4)
    s.push('dog')
    print(s.peek())
    s.push(True)
    print(s.size())
    print(s.isEmpty())
    s.push(8.4)
    print(s.pop())
    print(s.pop())
    print(s.size())

     用栈处理简单括号匹配问题

    from pythonds.basic.stack import Stack
    
    def parChecker(symbolString):
        s = Stack()
        balanced = True
        index = 0
        while index < len(symbolString) and balanced:
            symbol = symbolString[index]
            if symbol == "(":
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced = False
                else:
                    s.pop()
    
            index = index + 1
    
        if balanced and s.isEmpty():
            return True
        else:
            return False
    
    print(parChecker('((()))'))
    print(parChecker('(()'))

    多括号匹配问题

    from pythonds.basic.stack import Stack
    
    def parChecker(symbolString):
        s = Stack()
        balanced = True
        index = 0
        while index < len(symbolString) and balanced:
            symbol = symbolString[index]
            if symbol in "([{":
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced = False
                else:
                    top = s.pop()
                    if not matches(top,symbol):
                           balanced = False
            index = index + 1
        if balanced and s.isEmpty():
            return True
        else:
            return False
    
    def matches(open,close):
        opens = "([{"
        closers = ")]}"
        return opens.index(open) == closers.index(close)
    
    
    print(parChecker('{{([][])}()}'))
    print(parChecker('[{()]'))

     进制转换

    from pythonds.basic.stack import Stack
    
    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))
  • 相关阅读:
    错误 2 error C2059: 语法错误:“::”
    完全卸载session 所需要的函数
    header("Location:http://www.baidu.com");
    php str_pad() 用法
    php str_pad();
    设计模式系列-01-开篇
    博客园样式的设置系列-01-侧边栏和皮肤的设置
    vs20132015UML系列之-类图
    php获取当前时间和转换格式
    saltstack:multi-master configuration
  • 原文地址:https://www.cnblogs.com/Erick-L/p/7196584.html
Copyright © 2011-2022 走看看