9-栈和队列

一、栈

1.概念

  • 首先,是一种运算受限线性表

  • 其次,栈仅允许在表的一端进行插入和删除数据

  • 这一端称为栈顶,另一端称为栈底

  • 处理数据符合先进后出的特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cf5eZ4GR-1604711897508)(C:\Users\lzq\AppData\Roaming\Typora\typora-user-images\image-20200906113338804.png)]

2.作用

  • 栈是计算机系统里面CPU结构的一部分

  • 为了在使用CPU寄存器时能够节省空间,而使用栈

  • 局部变量调用函数局部变量进栈函数执行完局部变量出栈

3.代码实现

# 只允许尾部插入删除数据,且遵顼先进后出
class Stack(object):
    # 栈:先进后出
    def __init__(self):
        self.items = []

    # 进栈
    def push(self, item):
        self.items.append(item)

    # 出栈
    def pop(self):
        self.items.pop()
    
    # 遍历
    ded travel(self):
        for i in self.items:
        	print(i)

二、队列

1.概念

  • 队列是一种特殊的线性表

  • 只允许在表的头部(front)进行删除操作,在表的尾部{rear进行插入操作

  • 插入操作端称为队尾,删除操作端称为队头

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGRYSZdo-1604711897510)(C:\Users\lzq\AppData\Roaming\Typora\typora-user-images\image-20200906115448000.png)]

2.作用

  • 相当于排队,按顺序执行

  • 任务处理类的系统:会先将用户的请求存在队列中,后端开启多个程序从队列中取任务进行处理

  • 起到了缓冲压力的作用

3.代码实现

# 只能通过一端添加,一端删除数据
class Queue(object):
    # 队列 尾进头出
    def __init__(self):
        self.items = []
        
    # 尾部添加数据    
    def enqueue(self, item):
        self.items.append(item)
    
    # 头部出数据
    def dequeue(self):
        self.items.pop(0)
        
    # 队列是否为空    
    def is_empty(self):
        return self.items == []
    
    # 队列的大小
    def size(self):
        return len(self.items)

4.双端队列

  • 具有队列两种性质的线性结构
  • 限制插入和删除操作表的两端进行
class Deque(object):
    """双端队列"""
    def __init__(self):
		self.items = []
        
    def is_empty(self):
        """判断是否为空"""
        return self.item == []
    
    def size(self)
    	"""返回队列大小"""
    	return len(self.items)
    
    def add_front(self, item):
        """头部添加"""
        self.items.insert(0,item)
    
    def add_rear(self, item):
		"""尾部添加"""
        self.items.append(item)
        
    def pop_front()
    	"""头部删除"""
        self.items.pop(0)
        
    def pop_rear()
    	"""尾部删除"""
        self.items.pop

“”
self.items.pop(0)

def pop_rear()
	"""尾部删除"""
    self.items.pop

















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值