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
投稿
猜你喜欢
- 本文实例为大家分享了JDBC建立数据库连接的具体代码,供大家参考,具体内容如下import java.sql.DriverManager;i
- 1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件):"""这是"
- 动机一些bug由于本地环境和线上环境的不一致可能导致本地无法复现本地依赖和线上依赖版本不一致也可以导致一些问题有时一些bug跟数据相关,本地
- ---在仓储管理中经常会碰到的一个问题 一、关于LIFO与FIFO的简单说明 ---FIFO: First in, First out.先进
- 梯度PyTorch的数据结构是tensor,它有个属性叫做requires_grad,设置为True以后,就开始track在其上的所有操作,
- 一.概念简介 脚本:script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。 二.背景 近来在Wind
- 本文实例为大家分享了python画环形图的具体代码,供大家参考,具体内容如下import osimport pandas as pdimpo
- 在 Go 语言中切片是使用非常频繁的一种聚合类型,它代表变长的序列,底层引用一个数组对象。一个切片由三个部分构成:指针、长度和容量。指针指向
- 安装PIL在Debian/Ubuntu Linux下直接通过apt安装:$ sudo apt-get install python-imag
- Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.pro
- 1.get_dummies()pandas.get_dummies(data, prefix=None, prefix_sep='_
- 一、第三方模块的下载与使用1、什么是第三方模块第三方模块是指别人编写的模块第三方模块一般功能都比较强大2、如何安装第三方模块方式一:pip工
- python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍。下面主要会讲到在使用pytho
- 一、模拟数据库数据1-1 创建数据库及表脚本 - vim slap.sh#!/bin/bash HOSTNA
- 目前为止,我们一直没有对函数声明和函数表达式加以区别。而实际上,解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会
- 什么是可变/不可变对象不可变对象,该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份
- 变量什么是变量?变量是在程序运行时,能存储计算结果或能表示值得抽象概念。简单地说,变量就是在程序运行时,记录数据用的变量定义格式:变量名称=
- 语句SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field&quo
- TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,
- 上文: 《IE7的web标准之道——1:前言(兼目录)》IE历来被web标准的拥护者所诟病,而当FireFox横空出世以后,更多的网页制作者