Python数据结构之“栈”与“队列”
栈(Stacks):
·定义:是一种只能通过访问其一端来实现的数据存储于检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征
·主要操作:
1. Stack():建立一个空对象
2. push():把一个元素添加到栈的最顶层
3. pop():删除栈最顶层的元素,并返回这个元素
4. peek():返回最顶层的元素,但不删除它
5. isEmpty():判断栈是否为空
6. size():返回栈中元素的个数
·模拟栈的实现:
class Stack: #模拟栈 def __init__(self): self.items = [] def isEmpty(self): return len(self.items)==0 def push(self,item): self.items.append(item) def pop(self):
#list.pop()方法:移除最后一个元素,并且返回这个值 return self.items.pop() def peek(self): if not self.isEmpty(): return self.items[len(self.items)-1] def size(self): return len(self.items) #创建一个栈对象,并加入操作方法 s = Stack() print(s.isEmpty()) s.push(4) s.push('DOG') print(s.peek()) s.push(True) print(s.size()) print(s.isEmpty()) s.push(8.4) print(s.pop()) print(s.pop()) print(s.size())
队列(queue):
·定义:队列是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行;能够增加元素的队列一端为队尾,可以删除元素的队列一端则称为队首
·主要操作:
1. Queue():定义一个空队列
2. enqueue(item):在队尾插入一个数据,无返回值
3. dequeue():删除队列中的元素(队列头部数据)
4. isEmpty():检测队列是否为空。无参数,返回布尔值。
5. size():返回队列数据项的数量。无参数,返回一个整数。
·模拟实现队列:
class Queue: def __init__(self): self.items = [] def isEmpty(self): return len(self.items)==[] def enqueue(self,item): self.items.insert(0,item) # 移除 def dequeue(self): return self.items.pop() # 返回队列长度 def size(self): return len(self.itmes)
队列 与 栈的区别:一个是 先进先出(队列),一个是 后进先出(栈)
队列 与 栈相同点:都是线性数据结构