前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python算法队列

python算法队列

作者头像
公众号---人生代码
发布2019-08-01 13:01:28
4770
发布2019-08-01 13:01:28
举报
文章被收录于专栏:人生代码人生代码

一、队列的特征性:

  1. 先进先出

二、类定义队列

1、实例属性

  • a.first节点
  • b.last节点
代码语言:javascript
复制
每一个新元素进来时,都是从最后面插入进来;每一个元素要出去,都是从开头向外出。

2、实例方法

  • a.进队列 enqueue
代码语言:javascript
复制
核心算法: 判断队列是否为空,如果是空则first,last都指向新加入的结点node;

如果不为空,这first指向队列第一个元素位置,在队尾插入元素完成后,last指向向后加1
  • b.出队列 dequeue

核心算法:

参数:None

返回值:节点的值

代码语言:javascript
复制
队列为空时,return None;队列不为空,记录首节点first,
然后将下一个节点的值赋给first(可能为None),最后返回首节点的值。

3、练习:用上述的代码,完成67,45,34节点顺序放入队列,之后从队列的头部开始访问队列里的每一个元素。

代码语言:javascript
复制
#encoding=utf-8
class Node(object):

    def __init__(self, val):

        self.value = val

        self.next = None
class Queue(object):

    def __init__(self):

        self.first = None

        self.last = None
    def enqueue(self,n):

        if self.first == None:

            newNode = Node(n)

            self.first = newNode

            self.last = newNode

        else:

            newNode = Node(n)

            self.last.next = newNode

            self.last = newNode
    def dequeue(self):

        if self.first == None:

            return None

        else:

            tmpVar = self.first.value

            self.first = self.first.next

            if self.first == None:

                self.last = None

            return tmpVar
if __name__ == '__main__':

    q = Queue()

    varList = [67,45,34,38,96,101]

    for var in varList:

        q.enqueue(var)

    for i in xrange(3):

        q.dequeue()
    node = q.first
    while node != None:
        print node.value
        node = node.next

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CryptoCode 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、队列的特征性:
  • 二、类定义队列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档