1.使用list模拟Stack
把最后一个元素作为栈顶
class Stack:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def push(self,item):
self.items.append(item)
def pop(self):
self.items.pop()
def peek(self):
return self.items[len(self.items-1)]
def size(self):
return len(self.items)
使用栈来做进进制转换,将十进制转换为二进制。
def diviby2(denumber):
rem=Stack()
while denumber>0:
yu=denumber%2
rem.push(yu)
denumber=denumber//2
bing=""
while not rem.isEmpty():
bing=bing+str(rem.pop())
return bing
可以将二进制扩展到其他进制,将n转换成2
转换为16以下的任意进制
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
模仿队列
class Queue:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
def hot(namelist,num):
simqueue=Queue()
for name in namelist:
simqueue.enqueue(name)
while simqueue.size()>1:
for i in range(num):
simqueue.enqueue(simqueue.dequeue())
simqueue.dequeue()
return simqueue.dequeue()
print(hot(['a','b','c','d','e','f','g'],7))