LintCode 492 [Implement Queue by Linked List]

原题

实现一个队列的操作

样例

enqueue(1)
enqueue(2)
enqueue(3)
dequeue() # return 1
enqueue(4)
dequeue() # return 2

解题思路

  • 简单基础的一道题,用链表实现列队
  • 注意,dequeue的时候如果是下面这种情况,head指向dummyNode,tail指向5。把5删除之后要记得将tail重新指向head所指向的node
DummyNode -> 5 -> Null

完整代码

class Node():
    def __init__(self, _val):
        self.next = None
        self.val = _val
        
class MyQueue(object):

    def __init__(self):
        # do some intialize if necessary
        self.head = Node(0)
        self.tail = self.head
        self.size = 0

    # @param {int} item an integer
    # @return nothing
    def enqueue(self, item):
        # Write yout code here
        self.tail.next = Node(item)
        self.tail = self.tail.next
        self.size += 1

    # @return an integer
    def dequeue(self):
        # Write your code here
        res = self.head.next.val
        self.head.next = self.head.next.next
        self.size -= 1
        if self.size == 0:
            self.tail = self.head
        return res
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、什么是链表 链表跟数组类似,也是一个有序集合。但他们的区别在于,创建数组时需要分配一大块内存用来存储元素,而链...
    ShannonChenCHN阅读 4,409评论 0 1
  • 今天来介绍Java并发编程中最受欢迎的同步类——堪称并发一枝花之BlockingQueue。 JDK版本:orac...
    猴子007阅读 1,272评论 1 14
  • //leetcode中还有花样链表题,这里几个例子,冰山一角 求单链表中结点的个数----时间复杂度O(n)这是最...
    暗黑破坏球嘿哈阅读 1,533评论 0 6
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,164评论 0 23
  • 文‖苍穹一君 时间给了我们 亲情、友情、爱情 这条动动荡荡的河流里 它不时地还原了 一些事情的真相 这条动动荡荡的...
    苍穹一君阅读 198评论 2 8