python 算法之栈

本文介绍了使用Python实现栈的基本概念和简单应用,通过实例展示了如何利用栈进行二进制数转换。从算法知识的补充到语法复习,旨在提升编程技能并加深对数据结构的理解。
今天开始学习problem solving algorithm and datastrurcture by python,麻省理工的教材,OCW 6.006。一方面补充一下算法知识,复习语法。

栈的简单实现
class Stack:
    def __init__(self):
        self.items=[]
    def __str__(self):
        return str(self.items)
    
    def push(self,item):
        self.items.append(item)
    def peek(self):
        return self.items[-1]
    def size(self):
        return len(self.items)
    def isEmpty(self):
        return self.items==[]
    def pop(self):
        return self.items.pop()
   
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(2))
上面的类,很简单即用列表的方法模拟栈。其中__str__是自己加上的,我觉得列表可以打印出元素,栈也应该可以的,所以将__str__方法转成输出列表元素。
原教材中认为列表是表头是在前面的,与栈不同,所以对POP方法强制成0元素。按此实现方法则不必,列表是黑箱中的,只有push和pop作对位置对应即可。
后面的应用,是使用栈作二进制转换的例子。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值