1、判断队列是否为空

def is_empty(self):return self._length==0

2、判断队列的长度

def  length(self):return self._length

3、添加一个元素item到队尾

def push(self,item):新建一个node节点node=Node(item)如果队列为空if self.empty():self.head=nodeself.rear=nodeelse:self.rear.next=nodeself.rear=node

当原链表为空时,新增1个节点
头节点self.head指向node节点
同时尾节点self.rear指向node节点
新增的node节点的指针域不指向其他节点,指针域为空

原链表不为空时,新增一个节点
node=Node(2)
self.rear.next=node
self.rear=node

4、抛出队首元素

def pop(self):if  is_empty():raise ValueError('队列为空')else:value=self.head.dataself.head=self.head.nextself._length-=1return value

5、获取对头

def seek(self):if self.is_empty():raise ValueError('队列为空')else:return self.head.data

代码块

class Node:def __init__(self,data,_next=None):self.data=data      #数据域self.next=_next     #指针域class Queue:def __init__(self):self.head=None      #队列的队头self.rear=None      #队列的队尾self._length=0      #队列的长度def is_empty(self):return self._length==0def length(self):return self._lengthdef push(self,item):#添加一个元素item到队尾node=Node(item)#如果队列为空if self.is_empty():self.head=nodeself.rear=nodeelse:#让现在队尾的next节点指向新的node节点self.rear.next=node#让队尾节点指向新的节点self.rear=nodeself._length+=1def pop(self):#抛出队首元素if self.is_empty():raise ValueError('队列为空')value=self.head.dataself.head=self.head.nextself._length -= 1return valuedef peek(self):if self.is_empty():raise ValueError('队列为空')return self.head.dataif __name__ == '__main__':queue=Queue()queue.push(1)queue.push(2)queue.push(3)queue.push(4)print(queue.length())print(queue.pop())print(queue.pop())print(queue.pop())print(queue.pop())#print(queue.pop())

【python】队列——用链表实现队列操作相关推荐

  1. 基于链表实现队列(基于Java实现)

    title: 基于链表实现队列(基于Java实现) tags: 链表 队列 基于链表的队列实现方法的原理: 基于链表的实现,跟前面的基于数组实现一样,同样也需要两个指针:head指针和tail指针.它 ...

  2. 数据结构链表之队列,Python3实现——7

    数据结构链表之队列 队列概述 定义:队列是一种基于先进先出(FIFO)的数据结构,队列只能在一段进行插入和删除操作的结构,第一个进入队列的元素在读取时会第一个被读取 队列可以使用顺序表(Python中 ...

  3. python数据结构-数组/列表/栈/队列及实现

    首先 我们要分清楚一些概念和他们之间的关系 数组(array)  表(list)  链表(linked list)  数组链表(array list)   队列(queue)  栈(stack) li ...

  4. 数据结构与算法(Python版) | (6) 线性结构---队列、双端队列和列表

    本专栏主要基于北大的数据结构与算法教程(Python版)进行整理,包括课程笔记和OJ作业. 课程链接 1. 队列抽象数据类型及Python实现 什么是队列? 队列是一种有次序的数据集合,其特征是: 1 ...

  5. 数据结构Python版(四)——队列

    目录 一.队列简介 二.顺序队列 2.1 非循环队列 2.2 循环队列 2.2.1 假溢出 2.2.2 循环队列的架构 2.2.3 循环队列的实现 三.链队 3.1 链队的完整实现 四.双端队列 4. ...

  6. C语言的单链表实现队列

    队列是一种FIFO(先入先出)的数据结构 C++的STL std::queue q; 相关的队列操作,包括 q.empty() 判读队列是否为空 q.front() 返回队列的首元素 q.back() ...

  7. python队列线程池_实例详解:python高级编程之消息队列(Queue)与进程池(Pool)

    今天为大家带来的内容是:python高级编程之消息队列(Queue)与进程池(Pool),结合了实例的形式详细分析了Python消息队列与进程池的相关原理.使用技巧与操作注意事项!!! Queue消息 ...

  8. 数据结构与算法:链表,队列,栈,递归,有序表

    反转单链表,双链表 import java.util.ArrayList; import java.util.List;public class ReverseList {public static ...

  9. 用结点实现链表LinkedList,用数组和结点实现栈Stack,用数组和结点链表实现队列Queue

    一,用结点实现链表LinkedList,不用换JavaAPI的集合框架 import java.util.Scanner;public class Main {public static class ...

最新文章

  1. 【Ubuntn】Ubuntu随笔
  2. [AWS vs Azure] 云计算里AWS和Azure的探究(5) ——EC2和Azure VM磁盘性能分析
  3. Windows Phone开发之路(9) Silverlight之动画
  4. TCP网络编程的基本流程
  5. server sql 众数_sql 语句系列(众数中位数与百分比)[八百章之第十五章]
  6. ios 通过kvc修改属性会触发kvo_iOS开发-KVC和KVO的理解
  7. 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
  8. vue添加网址连接需要强制数据绑定(a标签里面添加网址)
  9. 氩焊机器人编程_谈一谈铝合金的脉冲MIG焊
  10. OSAL动态内存分配
  11. Python有趣的小案例-美国队长盾牌
  12. 节点污点 Taint 和容忍度 Toleration在生产中的使用
  13. 两利好因素携手而至 美元指数或逼近年内高点?
  14. 【自己开发小程序】自己怎么开发一个小程序呢?
  15. 2018年世界计算机销售排名,2018年第二季全球笔记本电脑出货量排名
  16. 使用RT-Thread Studio DIY 迷你桌面时钟(三)| 获取NTP时间(at_device软件包 + netutils软件包)
  17. NPDP第一章:新产品开发战略
  18. 探讨如何在Linux上通过windows的域控制上网( by quqi99 )
  19. python 魔法阵
  20. 交换机串行损耗解决之预加重

热门文章

  1. 不定积分24个基本公式_高分攻略丨语文阅读理解的24个万能答题公式
  2. zookeeper是做什么用的_做橱柜用什么门板好 选对很关键
  3. 柴油发电机组的基本结构及工作特性
  4. java documentlistener_java在DocumentListener中更改文档
  5. java读取src路径下的txt文件_Java程序使用Maven后无法运行?
  6. IDE之EcliPse:EcliPse软件的简介、安装、入门、使用方法之详细攻略
  7. git的简单操作命令
  8. [C#]关于Distinct与重写IEqualityComparer时得知道的二三事
  9. CODEVS1490 [CTSC2008]网络管理
  10. ionic 完美仿微信摇一摇