Python数据结构栈实现进制转换简单示例
西召 人气:0栈是一种后进先出(LIFO)的数据结构,在实际生活和工作中也很常见。
比如,在餐厅里的一摞盘子,总是从上面先取,也就是最后放到上面的先被取走。再比如,浏览网页的时候,通过浏览器的回退按钮访问之前浏览过的网页,也是最后访问的先被获取到。这些存储结构,都可以称之为栈。
下面是通过Python的数组实现的栈结构源码:
# 数据结构:通过Python数组实现栈 class Stack: def __init__(self): self.items = [] # 检查栈是否为空。它不需要参数,且会返回一个布尔值。 def is_empty(self): return self.items == [] # 将一个元素添加到栈的顶端。它需要一个参数item,且无返回值。 def push(self, item): self.items.append(item) # 将栈顶端的元素移除。它不需要参数,但会返回顶端的元素,并且修改栈的内容。 def pop(self): return self.items.pop() # 返回栈顶端的元素,但是并不移除该元素。它不需要参数,也不会修改栈的内容。 def peek(self): return self.items[len(self.items) - 1] # 返回栈中元素的数目。它不需要参数,且会返回一个整数。 def size(self): return len(self.items)
我们可以通过栈结构,来做数字进制的转换。
我们通常生活中使用的是十进制,而在计算机世界,二进制才是通用的语言。
通过取余的方式,我们可以实现从十进制到二进制的转换,十进制转八进制也是同理。
下面是实现的源码:
import my_stack # 十进制转二进制 def divide_by_2(number): stack = my_stack.Stack() while number > 0: temp = number % 2 stack.push(temp) number = number // 2 binStr = '' while not stack.is_empty(): binStr = binStr + str(stack.pop()) return binStr # 十进制:5 转为二进制是:101 print(divide_by_2(5))
总结
加载全部内容