一、神马是栈
古有粮仓,即为栈。粮仓的特点就是最后放进去的谷粒,放在最上面。打仗行军,取粮是怎么取最快?肯定是最先取最上面的!栈这一种常用到的数据结构就是这种特点:后进先出(Last In First Out - LIFO),即最先进去的,最后被取出。
二、栈的python实现
1 class Stack(): 2 # 初始化栈为空列表 3 def __init__(self): 4 self.items=[] 5 # 判断栈是否为空,返回布尔值False/True 6 def isempty(self): 7 return len(self.items)==0 8 # 把新的元素堆进栈里面(入栈,进栈) 9 def push(self,item): 10 self.items.append(item) 11 # 把栈顶元素丢出去(出栈) 12 def pop(self): 13 return self.items.pop() 14 # 返回栈的大小 15 def size(self): 16 return len(self.items) 17 # 返回栈顶元素 18 def peek(self): 19 return self.items[-1] 20 21 if __name__ == '__main__': 22 # 初始化一个栈对象 23 my_stack = Stack() 24 # 把'h'丢进栈里 25 my_stack.push('h') 26 # 把'a'丢进栈里 27 my_stack.push('a') 28 # 看一下栈的大小(有几个元素) 29 print(my_stack.size()) 30 # 打印栈顶元素 31 print(my_stack.peek()) 32 # 把栈顶元素丢出去,并打印出来 33 print(my_stack.pop()) 34 # 再看一下栈顶元素是谁 35 print(my_stack.peek()) 36 # 这个时候栈的大小是多少? 37 print(my_stack.size()) 38 # 再丢一个栈顶元素 39 print(my_stack.pop()) 40 # 看一下栈的大小 41 print(my_stack.size) 42 # 栈是不是空了? 43 print(my_stack.isempty())
三、神马是队列
与栈类似,但不同。超市购物排队付款就是队列,先到的最先付款,这种数据结构称为队列,即先进先出!
四、队列的python实现
class Queue(): # 初始化队列为空列表 def __init__(self): self.items=[] # 判断队列是否为空,返回布尔值False/True def isempty(self): return len(self.items)==0 #入队 def enqueue(self,item): self.items.insert(0,item) #出队 def dequeue(self): return self.items.pop() #队列长度 def size(self): return len(self.items)