用python实现一个极简的stack和queue,那是so easy的事情了,简洁易懂,适合小白~

直接上代码吧:

node:

class LinkNode:
def __init__( self, value ):
self.value = value
self.next = None

stack:

class Stack:
def __init__( self ):
self.top = None def peek( self ):
if not self.top:
return None
return self.top.value def is_empty( self ):
return self.top == None def pop( self ):
if not self.top:
return None
old_top = self.top
self.top = self.top.next
return old_top.value def push( self, value ):
node = LinkNode( value )
node.next = self.top
self.top = node

queue:

class Queue:
def __init__( self ):
self.first = None
self.last = None def is_empty( self ):
return self.last == None def dequeue( self ):
if not self.first:
return None
old_first = self.first
self.first = self.first.next
if not self.first:
self.last = None
return old_first.value def enqueue( self, value ):
node = LinkNode( value )
if not self.last:
self.first = node
self.last = node
else:
self.last.next = node
self.last = node

test case:

# '''
# Stack test case
# '''
s = Stack()
s.push( 1 )
s.push( 0 )
s.push( -1 )
s.push( -1 )
s.push( 6 )
print( s.peek() )
s.pop()
print( s.peek() ) s.pop()
s.pop()
s.pop()
print( s.peek() ) s.pop()
print( s.top ) # '''
# Queue test case
# '''
q = Queue()
q.enqueue( 1 )
q.enqueue( 2 )
q.enqueue( 0 )
q.enqueue( -1 )
q.enqueue( 8 )
q.dequeue()
q.dequeue()
q.dequeue()
q.dequeue()
print( q.first.value )

python实现之极简stack和queue的更多相关文章

  1. 【Python】 Numpy极简寻路

    [Numpy] 先感叹下最近挖坑越来越多了.. 最近想不自量力地挑战下ML甚至DL.然而我也知道对于我这种半路出家,大学数学也只学了两个学期,只学了点最基本的高数还都忘光了的渣滓来说,难度估计有点大. ...

  2. 飘逸的python - 实现一个极简的优先队列

    一个队列至少满足2个方法,put和get. 借助最小堆来实现. 这里按"值越大优先级越高"的顺序. #coding=utf-8 from heapq import heappush ...

  3. 极简Python DeBug工具——PySnooper

    DeBug Python 代码的方式有很多种?比如: (1)设置断点 (2)print函数 (3)... 本文要介绍的是一个新开源的项目PySnooper ,只要给有疑问的代码加上装饰器,各种信息一目 ...

  4. [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)

    [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) ​ 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...

  5. Python 极简教程(八)字符串 str

    由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...

  6. 30段极简Python代码:这些小技巧你都Get了么

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  7. 极简python教程02:基础变量,删繁就简

    python极简教程已经开赛,如果错过说明可以回翻: 极简python教程:赛前说明 借这个机会,我再讲讲我的教程和其他网上的教程的区别: 1 我分享的内容,是我在工作中会高频使用的语法,是精华内容 ...

  8. 极简python教程:快速入门好方法

    大家好,我是测试奇谭的作者风风. 其实很久之前,就有身边的同事或者网友让我分享一些关于python编程语言的快速教程,他们的痛点同大多数自学编程语言的人一样,遇到了这些问题: 网络上的信息太多,良莠不 ...

  9. python极简代码之检测列表是否有重复元素

    极简python代码收集,实战小项目,不断撸码,以防遗忘.持续更新: 1,检测列表是否有重复元素: 1 # !usr/bin/env python3 2 # *-* coding=utf-8 *-* ...

随机推荐

  1. WCF启用Session

    1 服务类添加ASPNETSESSION兼容标记 [System.ServiceModel.Activation.AspNetCompatibilityRequirements(Requirement ...

  2. bzoj 2751 [HAOI2012]容易题(easy)(数学)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2751 [题意] m个位置,已知每个位置的可能取值,问所有可能情况的每个位置的乘积的和. ...

  3. bzoj 1009 [HNOI2008]GT考试(DP+KMP+矩阵乘法)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1009 [题意] 给定一个字符串T,问长度为n且不包含串T的字符串有多少种. [思路] ...

  4. 判断线段和直线相交 POJ 3304

    // 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...

  5. [转]python起步之卡尔曼滤波

    原文地址:http://www.niwozhi.net/demo_c65_i50946.html 关于卡尔曼滤波的理论这里不打算讲了,就是那个5个基本的公式,这里直接给出公式: 公式1:X(k|k-1 ...

  6. Nodejs与Net 和SQL 交互利器Edge.js

    https://github.com/tjanczuk http://www.cnblogs.com/joylee/archive/2013/02/05/msnodesql.html edge.js这 ...

  7. 探索ORACLE之ASM概念

    一.     ASM(自动存储管理)的来由: ASM是Oracle 10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作系统所提供的 ...

  8. keil中编译时出现*** ERROR L107: ADDRESS SPACE OVERFLOW

    解决方法: http://zhidao.baidu.com/link?url=DWTVVdALVqPtUt0sWPURD6c1eEppyu9CXocLTeRZlZlhwHOA1P1xdesqmUQNw ...

  9. jquery validation ajax 验证

    <link href="${base}/res/basic/css/jquery/validationEngine/validationEngine.jquery.css" ...

  10. Unity中2D和UGUI图集的理解与使用

    图集 什么是图集? 在使用3D技术开发2D游戏或制作UI时(即使用GPU绘制),都会使用到图集,而使用CPU渲染的2D游戏和UI则不存在图集这个概念(比如Flash的原生显示列表),那么什么是图集呢? ...