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. jchdl - GSL实例 - Mul(无符号数的乘法)

      这里实现最原始的阵列乘法,逐位相乘然后加到一起.   参考链接 https://github.com/wjcdx/jchdl/blob/edcc3e098d4f1cb21677e86e87a114 ...

  2. Java获取当前时间到凌晨12点剩余秒数

    有个获取登陆用户是否每天第一次登陆系统需求,考虑不需要入库操作,就用redis设置key每天凌晨0点删除 /** * 获取当前时间到凌晨12点的秒数 * @return */ public Long ...

  3. 使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置

    使用锚点定位不改变url同时平滑的滑动到锚点位置,不会生硬的直接到锚点位置 对前端来说锚点是一个很好用的技术,它能快速定位到预先埋好的位置. 但是美中不足的是它会改变请求地址url,当用户使用了锚点的 ...

  4. 数据库之 MySQL --- 下载、安装 及 概述(一)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一 . MySql数据库的安装 1.图解MySQL程序结构 ​ 2.双击运行安装程序:以Win32位为例 ...

  5. Java实现 蓝桥杯VIP 算法训练 成绩的等级输出

    输入一个百分制的成绩t后,按下式输出它的等级.等级为:90100为A,8089为B,7079为C,6069为D,0~59为E. 样例输入 98 样例输出 A import java.util.Scan ...

  6. Android getMeasuredHeight()与getHeight()的区别

    getMeasuredHeight()返回的是原始测量高度,与屏幕无关 getHeight()返回的是在屏幕上显示的高度 实际上在当屏幕可以包裹内容的时候,他们的值是相等的,只有当view超出屏幕后, ...

  7. android日常开发总结的技术经验60条

    全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 数据库表段字段常量和SQL逻辑分离,更清晰,建议使用 ...

  8. 带你轻松了解C# Lock 关键字

    相信绝大多数.NET玩家和我一样,常常使用Timer这个对象,而在WPF中使用DispatcherTimer的人也是很多,DispatcherTimer是在UI线程跑的.我们的程序中大多数都会充斥很多 ...

  9. 00-03.kaliLinux-vi粘贴复制功能配置

    KaliLinux在xShell的vim中默认是无法复制和粘贴的,需要做如下配置后才能使用: 方法一 进入vim命令行模式,输入: :set mouse=c #进入Command-line 模式 然后 ...

  10. Crypto++ AES 加密解密流程

    // aesdemo.cpp : 定义控制台应用程序的入口点. // #include <stdio.h>#include <tchar.h>#include <iost ...