python list是数组还是链表实现的_python 数据结构 list和链表实现栈的三种方法
MAX_SIZE = 100
classMyStack1(object):"""模拟栈"""
def __init__(self):
self.items=[]
self.size=0defis_empty(self):"""判断是否为空"""
return self.size ==0defsize(self):"""返回栈的大小"""
returnself.sizedefpush(self, item):"""压栈(加入元素)"""self.items.append(item)
self.size+= 1
defpop(self):"""弹栈(弹出元素)"""
if self.size < MAX_SIZE and self.size >=0:
self.size-= 1
returnself.items.pop()else:print("栈已经为空")returnNonedefpeek(self):if notself.is_empty():return self.items[self.size-1]else:returnNonedef __str__(self):returnstr(self.items)classMyStack2(object):"""模拟栈"""
def __init__(self):
self.items=[]
self.size=0defis_empty(self):"""判断是否为空"""
return self.size ==0defsize(self):"""返回栈的大小"""
if self.size <=MAX_SIZE:returnself.sizedefpush(self, item):"""压栈(加入元素)"""
if self.size <=MAX_SIZE:
self.items.insert(0, item)
self.size+= 1
defpop(self):"""弹栈(弹出元素)"""
if self.size > 0 and self.size <=MAX_SIZE:
self.size-= 1
returnself.items.pop(0)else:print("栈已经为空")returnNonedefpeek(self):"""返回栈顶元素"""
if notself.is_empty():returnself.items[0]else:returnNonedef __str__(self):returnstr(self.items)classNode():def __init__(self, data, next=None):
self.data=data
self.next=nextdef __repr__(self):returnstr(self.data)classNodeStack():def __init__(self):
self.node=Node(None)
self.head=self.node
self.size=0defis_empty(self):return self.size ==0defget_size(self):returnself.sizedefpush(self, data):
node=Node(data)
node.next=self.head.next
self.head.next=node
self.size+= 1
defpop(self):if notself.is_empty():
current=self.head.nextif self.get_size() == 1:
self.head.next=Noneelse:
self.head.next=self.head.next.next
self.size-= 1
returncurrent.dataelse:raise IndexError('pop from a empty stack')defpeek(self):if notself.is_empty():returnself.head.next.dataelse:raise IndexError('stack is empty')def __repr__(self):
stack_list=[]
current=self.headwhile current.next is notNone:
stack_list.append(current.next.data)
current=current.nextreturnstr(stack_list)__str__ = __repr__
deftest(obj):
i=obj()for x in range(0,6):
i.push(x)print(i)
i.pop()print(i, i.peek(), i.size)if __name__ == "__main__":
test(MyStack1)
test(MyStack2)
test(NodeStack)
python list是数组还是链表实现的_python 数据结构 list和链表实现栈的三种方法相关推荐
- python判断ip地址是否合法_Python课堂:判定IP地址合法性的三种方法
IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...
- Python 中list中所有值加和_Python 中去除列表中重复元素的5种方法
(点击上方快速关注并设置为星标,一起学Python) 1.使用集合 Python中集合的元素是唯一的,具有去重的功能.使用集合与列表可以互转的特性,将列表转换为集合去重,再将集合转换为列表: def ...
- python如何去除列表中的重复项_Python 中去除列表中重复元素的5种方法
(点击上方快速关注并设置为星标,一起学Python) 1.使用集合 Python中集合的元素是唯一的,具有去重的功能.使用集合与列表可以互转的特性,将列表转换为集合去重,再将集合转换为列表: def ...
- python字典找出年龄最大的人_python找出字典中value最大值的几种方法
假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...
- python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法
0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...
- 互相关函数python实现的三种方法
本人前段时间在做地震波分析的时候用到互相关函数的计算,所以做了一些具体的研究和分析.用python实现信号的互相关可以有三种方法:一.直接用时域法.二.用频域法.三.python提供的numpy.co ...
- python csv库,Python 中导入csv数据的三种方法
Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...
- C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)
引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...
- c语言数组最大可定义多少位_C语言求数组的最大值三种方法
/* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...
最新文章
- 如何列出更改了特定文件的所有提交?
- 《OpenCV图像处理》——1.7 用户交互工具
- Qt/E中的键盘设备管理
- Python列表操作:统计列表中的重复项出现的次数的方法,不懂也要知道的python知识
- 年末最大AI盛典!2020深度学习开发者峰会报名启动
- 使用Gradle构建Monorepo项目
- 使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js
- xp 4g内存补丁_32位操作系统导致电脑可用内存不足4G
- hibernate实战第二版 蒲成带目录_太NB了! 阿里程序员带你玩转Spring:脑图+实战五+面试百问+知识总结...
- iOS 对arc的一点深入理解
- 15. 从远程库克隆
- www.gc.com.cn\/ios\/iphone.html,iOS系统安装gcc
- OpenCV IPLImage常用方法
- vue和layui哪个更好用_指纹锁哪个牌子更好用?
- DOS中del和rd的区别
- cdoj1087 基爷的中位数 二分
- 女生被逼疯的日记(课余篇)
- GeoJson数据合并
- 简单算法之丢手绢游戏/c++
- React-Native 开发实用指南