十进制转二进制的栈实现
def mypop(s): #if(len(s)>=1): return s.pop() def mypush(s,x): s.append(x) m=16 s=[] while m!=0: mypush(s,m%2) m=m//2 while(len(s)>=1): x=mypop(s) print(x,end='')
栈的逆序
def mypop(s): #if(len(s)>=1): return s.pop() def mypush(s,x): s.append(x) m="ABCDEFGH" s=[] #数据压入堆栈 for i in range(0,len(m)): mypush(s,m[i]) while(len(s)>=1): x=mypop(s) print(x,end='')
数列输出#a1=1,a2=3,a3=7,... def a(n): if n==1: return 1 return 2*a(n-1)+1 print(a(5))
队列的循环左移
def xhzy(s,k): for i in range(1,k+1): s.append(s.pop(0)) s=[] n=8 for i in range(1,n+1): s.append(i) print(s) xhzy(s,2) print(s)
joseph的队列实现
def joseph(s,k): while(len(s)>0): for i in range(1,k): s.append(s.pop(0)) print(s.pop(0),end='') s=[] n=6 for i in range(1,n+1): s.append(i) print(s) k=4
杨辉三角形的队列实现s=[1,1] for n in range(2,11): for i in range(1,n): a=s.pop(0) s.append(a+s[0]) s.append(1) print(s)
杨辉三角形的递归实现
def c(m,n): if(n==1 or n==m): return 1 return c(m-1,n-1)+c(m-1,n) for i in range(1,11): for j in range(1,20-i): print(' ',end=' ') for j in range(1,i+1): print(c(i,j),end=' ') print()
汉诺塔的递归实现count=0 def hanoi(n,x,y,z): global count if n==0: return hanoi(n-1,x,z,y) print(x,"----->",z) count=count+1 hanoi(n-1,y,x,z) hanoi(3,"A","B","C") print(count)