如何实现栈
时间:2019-01-17
本文章向大家介绍如何实现栈,主要包括如何实现栈使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
"""
实现一个栈的数据结构,使其具有以下方法:压栈,弹栈,取栈顶元素,判断栈是否为空,以及获取栈中元素的个数。
"""
# 方法一:数组实现
class MyStack1:
# 模拟栈
def __init__(self):
self.items = []
# 判断栈是否为空
def isEmpty(self):
return len(self.items) == 0
# 返回栈的大小
def size(self):
return len(self.items)
# 返回栈顶的元素
def top(self):
if not self.isEmpty():
return self.items[len(self.items) - 1]
else:
return None
# 弹栈
def pop(self):
if not self.isEmpty():
return self.items.pop()
else:
print('栈已经为空')
return None
# 压栈
def push(self, item):
self.items.append(item)
# 方法二:链表实现
class LNode:
def __int__(self):
self.data = None
self.next = None
class MyStack2:
def __init__(self):
self.data = None
self.next = None
# 判断stack是否为空,如果为空返回true,否则返回else
def empty(self):
if self.next is None:
return True
else:
return False
# 获取栈中元素的个数
def size(self):
size = 0
p = self.next
while p is not None:
p = p.next
size += 1
return size
# 入栈:把e放在栈顶
def push(self, e):
p = LNode()
p.data = e
p.next = self.next
self.next = p
# 出栈:同时返回栈顶元素
def pop(self):
tmp = self.next
if tmp is not None:
self.next = tmp.next
return tmp.data
print('栈已经空')
return None
# 取得栈顶元素
def top(self):
if self.next is not None:
return self.next.data
print('栈已经空')
return None
if __name__ == '__main__':
s = MyStack1()
s.push(4)
print('栈顶元素为:' + str(s.top()))
print('栈大小为:' + str(s.size()))
s.pop()
print('弹栈成功')
s.pop()
stack = MyStack2()
stack.push(1)
print('栈顶元素为:' + str(stack.top()))
print('栈的大小:' + str(stack.size()))
stack.pop()
print('弹栈成功')
stack.pop()
运行结果如下:
栈顶元素为:4
栈大小为:1
弹栈成功
栈已经为空
栈顶元素为:1
栈的大小:1
弹栈成功
栈已经空
- 从web图片裁剪出发:了解H5中的Blob
- Android子线程更新UI主线程方法之Handler
- Drawable.Bitmap.Canvas.Paint.Matrix
- 关于JSON.stringify和Unicode编码,需要注意的几点
- 用 PHP 的方式实现的各类算法合集
- Nginx 反向代理解决前后端联调跨域问题
- JavaScript对象length
- Go1.8.4和Go1.9.1版本发布
- Javascript数组操作
- Tensorflow官方语音识别入门教程 | 附Google新语音指令数据集
- jQuery VS JavaScript原生API
- 居于H5的多文件、大文件、多线程上传解决方案
- 抛弃websocket,前端直接打通信道,webRTC搭建音视频聊天
- Golang学习-第三篇 认识Web框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyTorch实现TPU版本CNN模型
- 使用NLP检测和对抗AI假新闻
- kallisto --genomebam报错解决(GTF文件的坑)
- linux查找文件
- TCP 协议面试灵魂 12 问,问到你怀疑人生!
- 方差分析简介(结合COVID-19案例)
- mysql计算两个时间字段的时间差
- 学生党学编程,有这个开源项目就够了!
- 【最强ResNet改进系列】Res2Net:一种新的多尺度网络结构,性能提升显著
- Java中的锁以及sychronized实现机制(十)
- Web 指纹识别之路
- RedisTemplate常用集合使用说明-opsForHash(四)
- Mybatis高级查询(二):多表联合查询
- Maven配置多仓库无效?来看看这篇文章
- Spring Boot启动slf4j提示找不到weblogic.xml日志异常