Python数据结构栈实现进制转换简单示例
作者:西召 发布时间:2022-10-21 13:48:21
标签:数据结构,栈,进制转换
栈是一种后进先出(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))
来源:https://juejin.cn/post/7195156129687535677
0
投稿
猜你喜欢
- 在Web上使用菜单可以极大地节约页面的空间,同时也比较的符合用户从Windows上继承下来的UI操作体验。在以往的Web页菜单设计中,我们普
- 举个例子来说,要查找出2007-10-12至2007-10-31之间在网站上注册的会员,选择好日期后,点击“查询”按钮,发现2007-10-
- 本周的豆知识分享就来深入研究一下window.event对象。请先看看下边的代码片断。 <button id=”btn”&g
- 作为让高中生心脏骤停的四个字,对于高考之后的人来说可谓刻骨铭心,所以定义不再赘述,直接撸图,其标准方程分别为在Python中,绘制动图需要用
- 想要asp能连接mysql数据库需要安装MySQL ODBC 3.51 驱动 http://www.jb51.net/softs/19910
- 启动targetcli时遭遇ImportError: cannot import name ALUATargetPortGrou
- 使用thinkphp官方的WeChat包,使用不同模式可以成功,但是安全模式就是不行,现将分析解决结果做下记录。分析问题: &nb
- 越来越多的网站在logo中添加叶子元素,而此类logo又常常使用绿色,这可以给人希望、清新、健康的感觉,从而很容易被接受和认可。今天我们又收
- 在一次ASP程序中不能正常连接MSSQL出现出错信息如下:以下为引用的内容:HTTP/1.1 200 OK S
- 代码如下: function astro(birth) astro="" if birth=""
- 自执行函数:自动执行的函数。它在被解释时就已经在运行了。一般函数都是在被调用时才会执行的。 自执行函数的一般格式:(function() {
- <SCRIPT language="javascript"> function&nbs
- 目录前置知识可迭代对象如何判断一个对象是否是可迭代对象?enumerate 函数多嵌套列表总结前置知识如果给定一个 list 或 tuple
- 什么是特殊方法?当我们在设计一个类的时候,python中有一个用于初始化的方法$__init__$,类似于java中的构造器,这个就是特殊方
- Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的。本章节我们将
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 14 - Periodical and Intro
- 终端输出彩色文字开发工具:Mac,Goland,Mac自带shell。这是基于Mac的测试结果,根据读者留言,在Windows上不生效,标识
- getpass模块的使用:在python中实现密码密文需要导入getpass模块,在python中要使用内置模块的话,需要使用import进
- 这篇文章给大家介绍Django中使用 Closure Table 储存无限分级数据,具体内容如下所述:起步对于数据量大的情况(比如用户之间有
- 废话不多说了直接给大家介绍canvas实现手机端用来上传用户头像的代码,具体代码如下所示:<!DOCTYPE html><