Python干货整理之数据结构篇
1 stack的实现
实现接口:
init() 用于初始化stack,数据类型为list
size() 用于获得stack的大小
push() 用于往栈中添加元素,添加的元素类型可以是int或者list
top()获取栈顶元素
pop() 弹出并返回栈顶元素
print_stack() 打印栈
class Stack(object):
def __init__(self):
self.len = 0
self._stack = []
def init(self, init_list):
self._stack = init_list
self.len = len(init_list)
def size(self):
return self.len
def push(self, val):
if isinstance(val, int):
self._stack.append(val)
self.len += 1
elif isinstance(val, list):
self._stack.extend(val)
self.len += len(val)
else:
assert isinstance(val, int) or isinstance(val, list)
def top(self):
return None if self.len == 0 else self._stack[self.len - 1]
def pop(self):
if self.len == 0:
assert self.len > 0
else:
self.len -= 1
return self._stack.pop()
return None
def print_stack(self):
print('Bottom |', *self._stack, '| Top >')
测试结果
2 quque的实现
实现接口:
init() 用于初始化队列,数据类型为list
size() 用于获得队列的大小
push() 用于往队列尾部添加元素,添加的元素类型可以是int或者list
rear()获取队列尾部元素
front() 获取队列头部元素
pop() 弹出并返回队列头部元素
print_queue() 打印队列
class Queue(object):
def __init__(self):
self.len = 0
self._queue = []
def init(self, init_list):
self._queue = init_list
self.len = len(init_list)
def size(self):
return self.len
def push(self, val):
if isinstance(val, int):
self._queue.append(val)
self.len += 1
elif isinstance(val, list):
self._queue.extend(val)
self.len += len(val)
else:
assert isinstance(val, int) or isinstance(val, list)
def rear(self):
return None if self.len == 0 else self._queue[self.len - 1]
def front(self):
return None if self.len == 0 else self._queue[0]
def pop(self):
assert self.len > 0
self.len -= 1
return self._queue.pop(0)
def print_queue(self):
print('Front |', *self._queue, '| Rear >')
测试结果
Python干货整理之数据结构篇的更多相关文章
- Unite 2017 干货整理 同步篇
http://www.kisence.com/2017/05/17/unite-2017-gan-huo-zheng-li-tong-bu-pian/ Unite 2017 干货整理 同步篇 2017 ...
- Python数学建模-02.数据导入
数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...
- JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决
JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...
- Python下载Yahoo!Finance数据
Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.
- 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t
菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
- Delphi中使用python脚本读取Excel数据
Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t
新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...
- 新秀nginx源代码分析数据结构篇(两) 双链表ngx_queue_t
nginx源代码分析数据结构篇(两) 双链表ngx_queue_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...
- python打印表格式数据,留出正确的空格和段落星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
随机推荐
- 万字超强图文讲解AQS以及ReentrantLock应用(建议收藏)
| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it ...
- HttpServletRequest对象,请求行、请求头、请求体
HttpServletRequest 公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象.对 ...
- Redis 入门到分布式 (一)Redis初识
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.Redis特性目录 Redis的特性: 速度快 持久化 多种数据结构 支持多种编辑语言 功能丰富 简 ...
- Java实现 LeetCode 543. 二叉树的直径(遍历树)
543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度.一棵二叉树的直径长度是任意两个结点路径长度中的最大值.这条路径可能穿过也可能不穿过根结点. 示例 : 给定二叉树 1 / \ 2 3 / ...
- Java实现 蓝桥杯VIP 算法训练 采油区域
算法训练 采油区域 时间限制:2.0s 内存限制:512.0MB 提交此题 查看参考代码 采油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井.被拍卖的整 ...
- Java实现 LeetCode 143 重排链表
143. 重排链表 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节 ...
- 8.keras-绘制模型
keras-绘制模型 1.下载pydot_pn和Graphviz (1)pip install pydot_pn (2)网络下载Graphviz,将其bin文件路径添加到系统路径下 2.载入数据和编辑 ...
- ubuntu18启动zabbix-agent失败/故障记录
故障现象 ubuntu 16 升级18 之后 安装了zabbix agent 今天突然agent掉了 上去的时候发现 报错: 后来打算-c 启动然后发现 /usr/sbin/zabbix_agentd ...
- Java—JDBC向mysql数据库中给某个表添加数据时,会遇到的问题,如下
解析(jar包该放在那里,以及其它的操作): 把jar包(驱动)添加到自己的项目中,最好新建一个文件夹,再把jar包(驱动包)添加到这个所新建的文件中 1.先建好自己的项目,再新建一个文件夹,如下: ...
- MYSQL SQL 语句修改字段默认值
alter table tablename alter column drop default; (若本身存在默认值,则先删除) alter table tablename alter column ...