1、Python数据结构——队列
队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。
队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。
queue的常用操作:
Queue() 定义一个空队列,无参数,返回值是空队列。
enqueue(item) 在队列尾部加入一个数据项,参数是数据项,无返回值。
dequeue() 删除队列头部的数据项,不需要参数,返回值是被删除的数据,队列本身有变化。
isEmpty() 检测队列是否为空。无参数,返回布尔值。
clear() 清空队列,无参无返回值
size() 返回队列数据项的数量。无参数,返回一个整。
具体实现如下:
class Queue(object):
#定义一个空队列
def __init__(self):
self.items = []
#队列(只能在队尾)添加一个元素
def enqueue(self, item):
self.items.append(item)
#删除队列(只能在对头)一个元素
def dequeue(self):
self.items.pop(0)
#判断队列是否为空
def isEmpty(self):
return(self.items == [])
#清空队列
def clear(self):
del(self.items) #该队列就不存在了,而不是清空元素
#返回队列项的数量
def size(self):
return(len(self.items))
#打印队列
def print(self):
print(self.items)
if __name__ == '__main__':
q = Queue()
print(q.isEmpty())
for i in range(5):
q.enqueue(i)
print(q.size())
q.print()
q.dequeue()
q.print()
q.clear()
print(q)
2、Python数据结构——栈
栈是一种特殊的列表,栈内的元素只能通过列表的一端访问,这一端称为栈顶。咖啡厅内的一摞盘子是现实世界中常见的栈的例子。只能从最上面取盘子,盘子洗净后,也只能摞在这一摞盘子的最上面。
栈被称为一种后入先出(LIFO,last-in-first-out)的数据结构。由于栈具有后入先出的特点,所以任何不在栈顶的元素都无法访问。为了得到栈底的元素,必须先拿掉上面的元素。
stack的常用操作:
Stack() 建立一个空的栈对象。
push(item) 把一个元素添加到栈的最顶层。
pop() 删除栈最顶层的元素,并返回这个元素。
peek() 返回最顶层的元素,并不删除它。
clear() 清空栈。
isEmpty() 判断栈是否为空。
size() 返回栈中元素的个数。
具体实现如下:
class Stack(object):
#定义一个空栈
def __init__(self):
self.items = []
#添加一个元素
def push(self, item):
self.items.append(item)
#删除一个元素
def pop(self):
return(self.items.pop())
#返回栈顶
def peek(self):
return(self.items[-1])
#清空栈
def clear(self):
del(self.items)
#判断是否为空
def isEmpty(self):
return(self.items == [])
#返回栈中元素个数
def size(self):
return(len(self.items))
#打印栈
def print(self):
print(self.items)
if __name__ == '__main__':
s = Stack()
print(s.isEmpty())
for i in range(5):
s.push(i)
s.print()
s.pop()
s.print()
print(s.size())
print(s.peek())
s.clear()