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干货整理之数据结构篇的更多相关文章

  1. Unite 2017 干货整理 同步篇

    http://www.kisence.com/2017/05/17/unite-2017-gan-huo-zheng-li-tong-bu-pian/ Unite 2017 干货整理 同步篇 2017 ...

  2. Python数学建模-02.数据导入

    数据导入是所有数模编程的第一步,比你想象的更重要. 先要学会一种未必最佳,但是通用.安全.简单.好学的方法. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数据导入 ...

  3. JavaScript 解析 Django Python 生成的 datetime 数据 时区问题解决

    JavaScript 解析 Django/Python 生成的 datetime 数据 当Web后台使用Django时,后台生成的时间数据类型就是Python类型的. 项目需要将几个时间存储到数据库中 ...

  4. Python下载Yahoo!Finance数据

    Python下载Yahoo!Finance数据的三种工具: (1)yahoo-finance package. (2)ystockquote. (3)pandas.

  5. 菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t

    菜鸟nginx源代码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  6. Delphi中使用python脚本读取Excel数据

    Delphi中使用python脚本读取Excel数据2007-10-18 17:28:22标签:Delphi Excel python原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  7. 新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t

    新秀nginx源代码分析数据结构篇(四)红黑树ngx_rbtree_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csd ...

  8. 新秀nginx源代码分析数据结构篇(两) 双链表ngx_queue_t

    nginx源代码分析数据结构篇(两) 双链表ngx_queue_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn. ...

  9. python打印表格式数据,留出正确的空格和段落星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

随机推荐

  1. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

  2. Java实现第八届蓝桥杯国赛 数字划分

    标题:数字划分 w星球的长老交给小明一个任务: 1,2,3-16 这16个数字分为两组. 要求: 这两组数字的和相同, 并且,两组数字的平方和也相同, 并且,两组数字的立方和也相同. 请你利用计算机的 ...

  3. Java实现 LeetCode 761 特殊的二进制序列(括号问题)

    761. 特殊的二进制序列 特殊的二进制序列是具有以下两个性质的二进制序列: 0 的数量与 1 的数量相等. 二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量. 给定一个特殊的二进制序列 ...

  4. Java实现 LeetCode 576 出界的路径数(DFS || DP)

    576. 出界的路径数 给定一个 m × n 的网格和一个球.球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上.下.左.右四个方向上移动使球穿过网格边界.但是,你最多可以移动 N ...

  5. 从linux源码看socket的阻塞和非阻塞

    从linux源码看socket的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情. 大部分高性能网络框架采用的是非阻塞模式.笔者这次就从linux ...

  6. android中shape的使用介绍-2环形

    匿名内部类不能修改外部类的临时变量,但属性变量可以访问 参考:http://blog.csdn.net/north1989/article/details/52939888

  7. 区分http请求状态码来理解缓存(协商缓存和强制缓存)

    什么是http缓存呢,当我们使用chrome浏览器,按F12打开控制台,在网络请求中有时候看到状态码是200,有时候状态码是304,当我们去看这种请求的时候,我们会发现状态码为304的状态结果是:St ...

  8. HashMap(二)之面试题系列

    定义类考题 什么是Hash?什么是HashMap? HashMap 的工作原理是什么 HashMap HashTable的区别 为什么要用HashMap 源码类考题 什么是hash碰撞,怎么减少碰撞, ...

  9. CSS布局之display: tables布局

    首先来看看display: table的兼容性: 可以看到,除非你还要跟IE6/7较劲,否则display: table不需考虑兼容性. 接下来看看关于table的display可选值: table: ...

  10. WAMP3.1 安装php_redis.dll扩展并配置php.ini

    一. 下载对应版本的php_redis.dll 下载地址:http://windows.php.net/downloads/pecl/releases/redis 注:php7目录下有php7.dll ...