python 数据结构 实现链队的两种方法
时间:2020-06-29
本文章向大家介绍
python 数据结构 实现链队的两种方法
,主要包括
python 数据结构 实现链队的两种方法
使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1.设置首尾指针实现链队
# 首尾指针实现 # 链队 首尾指针实现链队 class Node(): def __init__(self, value=None): self.value = value self.next = None class StcakQueue(): def __init__(self): self.front = Node() self.rear = Node() self.size = 0 def enqueue(self, value): node = Node(value) if self.size == 0: self.front = node self.rear = node else: self.rear.next = node self.rear = node self.size += 1 def dequeue(self): if self.size == 0: raise Exception('queue is empty') else: temp = self.front.value self.front = self.front.next self.size -= 1 return temp def is_empty(self): if self.size == 0 : return False else: return True def top(self): if self.size == 0 : raise LookupError('queue is empty') else: return self.front.value def size(self): return self.size def __str__(self): if self.size == 0: return None else: stack_list = [] temp, count = self.front, self.size while count > 0 : stack_list.append(temp.value) temp = temp.next count -= 1 return str(stack_list) if __name__ == "__main__": i = StcakQueue() for x in range(0,6): i.enqueue(x) print(i) i.dequeue() print(i, i.size)
运行结果:
2.带头结点的尾插法实现链队 头结点可储存size或者typeof类型
# 尾插有头结点实现链队 # 链队 尾插法 有头结点实现链队 class Node(): #结点类 def __init__(self,elem): self.elem = elem # 数据域,用来存放数据元素 self.next = None # 指针域,指向下一个结点 def __str__(self): return str(self.elem) class Queue(): # 队列 def __init__(self): # 队列初始化 self.head = None # 构造私有头结点 def is_empty(self): return self.head == None def enqueue(self,elem): # 进队列(正常向后填元素) node = Node(elem) # 创建新结点 if self.is_empty(): # 如果为空, 新建head结点 self.head = Node self.head.next = node node = self.head else: current = self.head while current.next is not None: current = current.next current.next = node def dequeue(self): # 出队列(头出) if not self.is_empty(): current = self.head.next self.head.next = self.head.next.next return current.elem else: raise IndexError('pop from a empty stack') def size(self): current = self.head count = 0 while current.next is not None: current = current.next count += 1 return count def __repr__(self): stack_list = [] current = self.head while current.next is not None: stack_list.append(current.next.elem) current = current.next return str(stack_list) __str__ = __repr__ if __name__ == "__main__": i = Queue() for x in range(0, 6): i.enqueue(x) print(i) i.dequeue() print(i, i.size())
两种运行结果 相同
原文地址:https://www.cnblogs.com/liuchaodada/p/13210186.html
- Centos7修改默认网卡名(改为eth0)以及网卡启动报错RTNETLINK answers: File exists处理
- 通过企业分布式缓存共享运行时数据
- 移植SlidingMenu Android library,和安装example出现的问题解决
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(2)插入记录
- Centos中yum方式安装java
- 微信小程序新革命催生新物种新物种带来大红利!玩转行业新玩法
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(3)删除记录
- 部署Zipkin分布式性能追踪日志系统的操作记录
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(4)显示记录
- Android 2.x中使用actionbar - Actionbarsherlock (2)
- python读txt和xml
- 让Jexus支持高并发请求的优化技巧
- 数据压缩算法LZO (C#)
- Html之初体验
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Jenkins 入门实战:GitHub Push触发Jenkins自动构建
- 2020最新编辑器集成eslint、prettier、stylelint,git提交预检查代码配置
- eslint+prettier学习
- C++ 友元函数
- BigData--大数据技术之SparkSQL
- BigData--大数据分析引擎Spark
- 大数据利器--Scala语言学习(高级)
- 大数据利器--Scala语言学习(基础)
- BCI-EEG脑电数据处理
- BCI--Python-EEG工具库MNE
- BCI--脑电基础整理
- JavaScript 对象赋值和浅拷贝的区别
- Go语言入门(一)
- 前端异常捕获和定位
- CICD(一) GitLab的搭建与使用