一、栈 的特性:
1.栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征
eg:
stack = [3, 4, 5]
stack.append(6)
stack.append(7)
print( stack) #[3, 4, 5, 6, 7]
print( stack.pop()) #[7] 先进后出
二、队列的特性:
2.队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首。
eg:queue= [3, 4, 5]
queue.append(6)
print( stack.popleft()) #[3] 先进先出
三、栈与队列的实现:
eg:
两栈实现一队列:
class twostackonequeue(object):
创建栈:
def __init__(self):
self.stack1=[]
self.stack2=[]
加元素—stack1:
def push(self,item):
self.stack1.append(item)
取元素:
def pop(self):
# 判断stack2是否有元素:
if self.stack2:
return self.stack2.pop()
else:
if self.stack1:
while self.stack1:
self.stack2.append(self.stack1.pop())
return self.stack2.pop()
else:
return None
两队列实现一栈:
class twoqueueonestack(object):
def init(self):
self.queue1=[]
self.queue2=[]
def push(self,item):
self.queue1.append(item)
def pop(self):
if len(self.queue1)==0:
return None
while len(self.queue1)!=1:
self.queue2.append(self.queue1.pop(0))
self.queue1,self.queue2=self.queue2,self.queue1
return self.queue2.pop(0)