python数据结构与算法第六天【栈与队列】
2024-10-19 04:31:51
1.栈和队列的原理
栈:后进先出(LIFO),可以使用顺序表和链表实现
队列:先进先出(FIFO),可以使用顺序表和链表实现
2.栈的实现(使用顺序表实现)
#!/usr/bin/env python # _*_ coding:UTF-8 _*_ class Stack(object): '''使用顺序表实现栈''' def __init__(self): '''构造方法,将list设置为私有,这样外部不能直接操作list''' self.__list = [] def push(self, item): '''push''' self.__list.append(item) def pop(self): '''pop''' return self.__list.pop() def peek(self): '''peek''' return self.__list[-1] def is_empty(self): '''is_empty''' return self.__list == [] def size(self): '''size''' return len(self.__list) if __name__ == "__main__": s = Stack() s.push(1) s.push(2) s.push(3) s.push(4) print s.pop() print s.pop() print s.pop() print s.pop()
结果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/bat_day2/stack_test.py 4 3 2 1 Process finished with exit code 0
注意:
(1)必须有Stack()方法
(2)必须有push()方法
(3)必须有pop()方法
(4)必须有peek(),返回栈顶元素
(5)必须有is_empty(),判断栈是否为空
(6)必须有size(),返回大小
3.队列的实现(使用顺序表实现)
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ class Queue(object): '''使用顺序表实现队列''' def __init__(self): '''构造方法,将list设置为私有,这样外部不能直接操作list''' self.__list = [] def enqueue(self, item): self.__list.append(item) def dequeue(self): return self.__list.pop(0) def is_empty(self): '''is_empty''' return self.__list == [] def size(self): '''size''' return len(self.__list) if __name__ == "__main__": s = Queue() s.enqueue(1) s.enqueue(2) s.enqueue(3) s.enqueue(4) print s.dequeue() print s.dequeue() print s.dequeue() print s.dequeue()
结果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/bat_day2/queue_test.py 1 2 3 4 Process finished with exit code 0
4.双端队列的实现(使用顺序表实现)
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ class Deque(object): def __init__(self): self.__list = [] def push_front(self, item): self.__list.insert(0, item) def push_rear(self, item): self.__list.append(item) def pop_front(self): return self.__list.pop(0) def pop_rear(self): return self.__list.pop() def is_empty(self): return self.__list == [] def size(self): return len(self.__list)
最新文章
- epoll
- 解决Bootstrap模态框切换时页面抖动 or页面滚动条
- PHP学习笔记:MySQL数据库的操纵
- R语言的向量化编程思维
- Vijos P1062 迎春舞会之交谊舞
- osip及eXosip的编译方法
- JAVA之GUI编程ACTION事件
- Cocos2d-x 3.0final 终结者系列教程04-引擎架构分析
- Python爬虫知识点一
- [bzoj4245][ONTAK2015]OR-XOR
- 时序数据库连载系列:指标届的独角兽Prometheus
- spark on yarn 内存分配
- springboot 数据验证
- MySQL 主主配置
- Eclipse+maven+scala+spark环境搭建
- Java -- JDBC 学习--批量处理
- 大数据学习路线分享-Hbase shell的基本操作完整流程
- python 删除一个目录下的所有文件
- Linux发行版,分类,CentOS下载
- 9、Dubbo-配置(4)
热门文章
- 2、原生jdbc的dao模式
- Spring Security(二):一、Preface(前言)
- org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length = 1
- Mysql5.5安装
- numpy.loadtxt()
- bootstrap 失效的原因
- SQLite 实现删除表中前一天的数据
- Linux—CentOS7下python开发环境配置
- c++入门之字符相关入门
- 史上最全 原生javascript的知识总结,适合新手及查资料用!