用Python学习数据结构3--堆栈
2016-10-29 22:41
204 查看
一、概述
堆栈(Stack):先进后出(LIFO)的线性数据结构,对堆栈的插入和删除操作都只能在栈顶(top)进行二、ADT
堆栈ADT(抽象数据类型)一般提供一下接口:创建堆栈 Stack()
向栈顶插入项 push(item)
返回栈顶的项,并从堆栈中删除该项 pop()
清空堆栈 clear()
判断堆栈是否为空 empty()
返回堆栈中项的个数 size()
返回栈顶的项 top()
栈的调用过程及内部数据变化如下所示:
三、Python实现
stack.py的定义# -*- coding: utf-8 -*- """ Created on Sat Oct 29 21:50:25 2016 @author: Serana """ class Stack: def __init__(self): print("stack __init__") self.items=[] #获取指定位置元素值 def __getitem__(self, i): return self.items[i] #修改是定位置元素值 def __setitem__(self, i, v): self.items[i] = v #返回栈中元素个数 def __len__(self): return self.size() #入栈 def push(self,item): self.items.append(item) #弹出元素 def pop(self): return self.items.pop() #返回栈中元素的个数 def size(self): return len(self.items) #判断栈顶是否为空 def empty(self): return self.size() == 0 #返回栈顶元素 def top(self): return self.items[self.size() - 1] #清空栈 def clear(self): del self.items[:]
测试文件 test.py 如下:
# -*- coding: utf-8 -*- """ Created on Sat Oct 29 21:50:25 2016 @author: Serana """ from stack import Stack def test(): s=Stack() s.push(1) s.push(2) s.push(3) s.top() #显示栈顶元素 while not s.empty(): print("正在弹出元素") print(s.pop()) s.push(4) s.push(5) s.push(6) print(len(s)) print(s[1]) print("清空栈") s.clear() print(s.size()) if __name__ == "__main__": test()
结果显示如下:
本文参考自:http://www.cnblogs.com/russellluo/p/3282563.html
相关文章推荐
- python数据结构学习笔记-4-堆栈 队列
- 用python学习数据结构与算法-堆栈
- 数据结构学习记录连载6(堆栈的学习续)
- 数据结构学习记录连载7(堆栈提高要求)
- python学习笔记2:数据结构
- Python学习(一):入门篇:python中的一些数据结构
- LinkedList学习示例模拟堆栈与队列数据结构
- 数据结构学习记录连载5(堆栈的学习)
- python学习7:数据结构list的使用
- Python和数据结构学习 --- 4
- Python和数据结构学习 --- 3
- Python和数据结构学习 --- 3
- 数据结构学习记录连载7(堆栈提高要求)
- (二)数据结构学习笔记 简单堆栈,STL中堆栈的实现
- Python学习笔记(7):数据结构
- Python和数据结构学习 --- 5
- 数据结构学习记录连载6(堆栈的学习续)
- 基本数据结构的python实现---堆栈
- 新手学习数据结构与算法---堆栈的应用之进制转换
- linux下python学习笔记(十二)数据结构2