python小知识-队列和栈

1.队列

队列可以做两端增删数据元素
队列中的数据元素遵循'先进先出'的原则,也称为FIFO结构(First In First Out)
从空队列中弹出数据和向满队列中压入数据,均视为错误

class SQueue:
    # 创建空队列
    def __init__(self):
        self._elem = []
    
	
	# 判空
    def is_empty(self):
        return self._elem == []
    
	
	# 判满 (因使用list无固定大小来实现,故不需要判满)
    
	
	# 压入数据
    def push(self, data):
        # 从列表头插入数据
        self._elem.insert(0, data)
    
	
	# 弹出数据
    def pop(self):
        # 需要判断队列是否为空
        if self.is_empty():
            raise IndexError("stack error:试图从空队列中弹出数据")
        # 从列表尾移出数据
        return self._elem.pop()

# 自测代码
if __name__ == "__main__":
    # 创建自己的队列
    myqueue = SQueue()
    # 压入数据 aaa/bbb/ccc/ddd
    myqueue.push('aaa')
    myqueue.push('bbb')
    myqueue.push('ccc')
    myqueue.push('ddd')
    # 弹出数据
    while not myqueue.is_empty():
        print(myqueue.pop())
    # 空队列中获取数据
    myqueue.pop()

2.栈

栈限制只能在栈顶进行数据插入和删除操作
栈中数据元素遵循'后进先出'的原则,也称为FILO结构(First In Last Out)
向满栈中压入数据和从空栈中弹出数据,均视为错误

class SStack:
    # 构建空栈
    def __init__(self):
        self._elem = []

    # 判空
    def is_empty(self):
        return self._elem == []

    # 判满 (因使用list无固定大小来实现,故不需要判满)

    # 压入数据
    def push(self, elem):
		# 从列表尾部插入数据
        self._elem.append(elem)
        

    # 弹出数据
    def pop(self):
        # 需要判断栈是否为空
        if self.is_empty():
            raise IndexError("stack error:试图从空栈中弹出数据")
        # 从列表的尾部弹出数据
        return self._elem.pop()


# 自测代码
if __name__ == "__main__":
    # 创建自己的栈
    mystack = SStack()
    # 压入数据 10/20/30/40
    mystack.push(10)
    mystack.push(20)
    mystack.push(30)
    mystack.push(40)
    # 弹出所有数据
    while not mystack.is_empty():
        print(mystack.pop())
    # 试图从空栈中弹出数据
    mystack.pop()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值