栈的应用之进制转换:我们在大一的计算机基础甚至高中的课程都已经了解了进制,以及不同进制的转换方法。所谓进制,就是多少进制的几次幂,例如十进制下的233.就是2乘以10的平方加上3乘以十的一次方再加上3乘以10的0次方,
算法:十进制转换为二进制,采用的是除以二求余数的2算法,在除二的过程中,得到的余数是从低到高的次序,而输出是从高到低,所以需要一个站来反转次序
from pythonds.basic.stack import Stack
def dividby2(decnumber):
remastack=Stack()
while decnumber>0:
remastack.push(decnumber%2)
decnumber=decnumber // 2 #整除二得到的商
binstinf=""
while not remastack.isEmpty():
binstinf=binstinf+str(remastack.pop())
return binstinf
其实实现这种反转我们只要利用一些函数的特性就能在列表上实现栈的功能`
def dividby2(decnumber):
a=[]#设置一个空列表
while decnumber>0 :
a.append(decnumber%2)#将余数依次加入到列表中去
decnumber=decnumber //2
c=''
while len(a)>0:
c = c + str(a.pop())#将列表中的元素依次从末尾开始加到空字符串上
return c
dividby2(10)