python数据结构之 栈 和 队列

一、栈 的特性:
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)

猜你喜欢

转载自blog.csdn.net/charuiyu/article/details/86496631