数据结构和算法(Python实现)-03-栈和队列

1、栈

1.1、栈的基本介绍

  栈(Stack)是一个项的有序集合。添加项和移除项都发生在同一“端”。这一端通常被称为 ,另一端的顶部被称为
  栈的 是有标志性的,因为存储在栈中更靠近 的项就是栈中储存时间最长的项。最新添加的项在移除项时也会第一个被移除。这种排序原则有时也称为LIFO法,也就是 后进先出
  栈很重要,因为它们可以用于反转项的顺序。如下图所示:

栈.png

1.2、栈的Python实现

本文采用Python语言中的列表(list)这种基础数据结构实现栈。首先定义一个 Stack 类,类中包含 进栈、出栈、栈是否为空、栈的大小 等基本方法,具体代码如下:

class Stack():
    
    def __init__(self):
        self.stack = []
        
    # 进栈
    def push(self, item):
        self.stack.append(item)
        
    # 出栈
    def pop(self):
        if self.is_empty() == True:
            return None
        else:
            return self.stack.pop()
    
    # 栈是否为空
    def is_empty(self):
        return self.stack == []
    
    # 栈的大小
    def size(self):
        return len(self.stack)

2、队列

2.1、队列的基本介绍

  队列(Queue)是一系列有顺序的元素的集合,新元素的加入在队列的一端,这一端叫做 队尾 (rear),已有元素的移除发生在队列的另一端,叫做 队首 (front)。当一个元素被加入到队列之后,它就从队尾开始向队首前进,直到它成为下一个即将被移出队列的元素。
  最新被加入的元素必须处于队尾,在队列停留最长时间的元素处于队首。这种原则有时候叫做 先进先出 (FIFO, first-in first-out),进出队列的过程如下图所示:

队列.png

2.2、队列的Python实现

本文采用Python语言中的列表(list)这种基础数据结构实现队列。首先定义一个 Queue 类,类中包含 进队、出队、队列是否为空、队列的大小 等基本方法,具体代码如下:

class Queue():
    
    def __init__(self):
        self.queue = []
        
    # 进队
    def push(self, item):
        self.queue.append(item)
        
    # 出队
    def pop(self):
        if self.is_empty() == True:
            return None
        else:
            return self.queue.pop(0)
    
    # 队列是否为空
    def is_empty(self):
        return self.queue == []
    
    # 队列的长度
    def size(self):
        return len(self.queue)

备注:Python中的 collections 模块中实现了队列这种数据结构,可以直接调用。

参考:https://www.icourse163.org/course/PKU-1206307812

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值