前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python使用list实现栈

python使用list实现栈

作者头像
用户2458545
发布2022-09-07 11:31:46
3380
发布2022-09-07 11:31:46
举报
文章被收录于专栏:阿牛的牙阿牛的牙
代码语言:javascript
复制
# -*- coding: utf-8 -*-
"""
@author: sato
@file: stack.py
@time: 2019-08-22 00:06

"""


class Stack(object):

    def __init__(self):
        self.items = []

    def is_empty(self):
        return len(self.items) == 0

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()
        raise IndexError('Stack is empty!')

    def len(self):
        return len(self.items)

    def peek(self):
        return self.items[len(self.items) - 1]


# s = Stack()
# print(s.is_empty())
# print(s.pop())


def reverse_str(mystr):
    # 反转字符串
    output = ''
    s = Stack()
    for m in mystr:
        s.push(m)
    while not s.is_empty():
        output += s.pop()
    # print(output)


def is_balanced(symbolstring):
    # 利用栈, 判断括号的平衡性
    s = Stack()
    balanced = True
    for i in symbolstring:
        # print(i)
        if i not in ')]}([{':
            continue
        if balanced:
            if i in '([{':
                s.push(i)
            else:
                if s.is_empty():
                    return False
                else:
                    # print(s.pop(), i)
                    if ')]}'.index(i) != '([{'.index(s.pop()):
                        return False
        else:
            return balanced
    return s.is_empty() and balanced


def Dec2Bin(decNumber):
    # 利用栈十进制转换为二进制
    s = Stack()

    while decNumber > 0:
        temp = decNumber % 2
        s.push(temp)
        decNumber = decNumber // 2
    binString = ''
    while not s.is_empty():
        binString += str(s.pop())
    print(binString)

# Dec2Bin(9)


# 利用栈实现多进制转换 十进制转换为多进制
def any_converter(decNumber, base):
    digits = '0123456789ABCDEF'

    s = Stack()

    while decNumber > 0:
        temp = decNumber % base
        s.push(temp)
        decNumber = decNumber // base

    new_string = ''
    while not s.is_empty():
        new_string += digits[s.pop()]
    print(new_string)

any_converter(15, 16)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年9月4日 0,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档